Cómo puedo copiar un campo de un nodo A en otro nodo B

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
arantas's picture

Hola, amigos Drupalistas,
les hago llegar un atento saludo desde Lima,

Tengo un nodo "Catálogo" con un campo "Distrito".
He instalado el módulo UserContentType para poder definir varios campos para cada usuario identificado en el sistema, en el nodo "User"; uno de ello es el campo "Distrito de ventas".

Cada vez que un usuario va a agregar on-line un registro en el nodo Catálogo, necesito copiar en su campo Distrito el valor del campo Distrito de ventas de su correspondiente nodo "User".

Mi dificultad está en la variante que he creado: "Agregar en Catálogo" dentro de admin/structure/pages.
No veo la forma de capturar el "Distrito de ventas" y tampoco la forma de copiar ese valor en el campo "Distrito". Supongo que debo usar "contextos" y "relaciones" pero los varios intentos que hice no me han resultado.

Muchas gracias anticipadas por la ayuda que puedan brindarme!

Comments

¿Qué estás usando? Drupal 7 o

jackbravo's picture

¿Qué estás usando? Drupal 7 o 6? Y para definir los Distritos, usas taxonomía? o un campo lista nada más?

Para lo que quieres hacer, y sin tener más detalles, puede que no haya un módulo pre-hecho que ya haga eso, y suena como que tienes que programar tu propio módulo para lograr lo que quieres. Pero puede que tampoco sea tan complicado.

Si quieres investigar por ese lado, te recomendaría utilizar la función hook_form_alter. Por ahí hay tutoriales sobre cómo usarla: http://mustardseedmedia.com/podcast/episode53, http://lyphuong.drupalgardens.com/content/drupal-alters-and-overrides-ho...

Saludos!

hola jackbravo, gracias por

arantas's picture

hola jackbravo, gracias por tu respuesta.
Estoy usando Drupal 7, y para definir los Distritos he creado un nodo con el campo lista.
saludos!

Entonces efectivamente creo

jackbravo's picture

Entonces efectivamente creo que necesitas hacer un hook_form_alter. Te recomiendo ver el video que puse en el comentario de arriba.

sugerencia para acceder a datos del nodo User

arantas's picture

hola jackbravo,
gracias por el video, ya he captado el uso que le voy a dar para cambiar los valores por defecto de los formularios;
quiero preguntarte si tienes alguna sugerencia sobre la parte de mi pregunta relacionada a cómo establezco el acceso al valor del campo "distrito de ventas" que he almacenado en el nodo User, que es un nodo resultado del módulo UserContentType,
muchas gracias por la atención

Estas usando este módulo

jackbravo's picture

Estas usando este módulo verdad? https://drupal.org/project/user_content_type.

Si lees el archivo .module de ese módulo ahí debe venir la manera en como se obtiene el node de cada usuario. Pero me imagino que ha de ser algo así:

<?php
global $user; // obtener el objeto user del usuario logueado

$node = node_load(array(
 
'uid' => $user->uid,
 
'type' => 'user_profile'// supongo que así se llama tu tipo de nodo para usuarios
));
?>

Encontré otra solución

arantas's picture

Creo que esta otra manera está mejor, no necesito del módulo UserContentType, por lo tanto no hay que enlazar al nodo User.


Lo que haré es agregar campos en la cuenta misma de cada Usuario, desde
/admin/config/people/accounts/fields


Ahí puedo crear nuevos campos y accedo a ellos definiendo en la variante un contexto de Usuario Actual (logged in user).

Suena como una buena idea. Te

jackbravo's picture

Suena como una buena idea. Te ahorras un módulo, lo cual siempre es bueno. No sabía bien por qué estabas usando User Content Type.

Reconstruir el User Content Type

arantas's picture

Solamente se necesita el módulo, y por tanto el nodo user, si se presenta la necesidad de hacer referencia a la información de usuarios en contextos que hay que usar datos de nodos.


Ahora que he tomado este camino, y después de ingresar los datos a los nuevos campos agregados a cada "user", es necesario emparejar el nodo (user) de los usuarios. Hay que recordar que el nodo user es un "espejo" de la entidad user.


Para actualizar el User Content Type, aplicas el botón [Rebuild user content manually] en http://localhost/ruosdes/admin/config/content/user_content_type