Contenidos Relacionados

Events happening in the community are now at Drupal community events on www.drupal.org.
TXANKETE's picture

Hola,
Estoy tratando de relacionar contenidos y no sé cual es la mejor manera de hacerlo. Espero opiniones.
El caso es el siguiente, tengo unos usuarios, cada usuario tiene unos tratamientos farmacológicos asignados determinados por nombre del fármaco, dosis del desayuno, dosis de la comida, dosis de la cena.
Los nombres del fármacos y sus características creo que es adecuado que estén en un contenido independiente llamado "FÁRMACOS".
Lo que se me ha ocurrido es hacer un contenido que tenga un campo de referencia al usuario (mediante "User Reference") y un campo de referencia al farmaco (mediante Node Reference), despúes irian el resto de campos necesarios "Dosis de desayuno, Dosis de comida, etc.
El problema con el que me encuentro haciendolo de esta manera, es que no sé como lograr que desde una página con los datos del usuario, puedas ver sus tratamientos y a su vez añadir nuevos tratamientos sin tener que buscar el nombre del usuario en el campo de referencia ("user Reference").

Comments

form alter + arg()

mnico's picture

Voy a dar un ejemplo de como se podría hacer:
Ese contenido que mencionas, para este ejemplo, lo llamaremos tratamiento, por lo tanto para crear un contenido debería ser con la url "node/add/tratamiento", pero también podriamos darle otro argumento a la url, "node/add/tratamiento/[uid]", donde [uid] es simplemente la id del user. Entonces, cuando entramos al formulario con ese argumento adicional, podríamos hacer que se le asigne automáticamente la uid al campo user reference, para ello tendríamos que hacer un módulo que implemente un hook_form_alter y con la funcion arg(3) obtenemos la uid de la url para la asignación.

Esto es parecido a lo que hace el módulo Node Reference Url, no he visto algo parecido para user reference.

Y para los tratamientos de un usuario deberías utilizar un views, con ayuda de relationships podrías desplegar todos los tratamientos de un usuario en particular.

Saludos

LO PROBARÉ

TXANKETE's picture

Probaré lo que me propones y os comentaré el resultado.
En cuanto a lo que dices de Views, efectivamente, la manera de mostrar la información más adecuada parece que es de esa forma.
Muy agradecido, un saludo!

Problema con el patrón de URL

TXANKETE's picture

He probado lo que me has comentado mnico, pero sucede que esto funciona bien cuando el usuario que registra el "tratamiento" es el propio usuario con el que está relacionado ese tratamiento. El problema, es que esto no es así. Un usuario con un determinado rol es el que registra los Tratamientos de otros usuarios y no sé como lograr que accediendo desde la página de perfil o de cuenta de ese usuario (al cúal queremos asignarle un tratamiento) pueda obtener su [uid] de manera predeterminada en el campo "User Reference" del contenido "tratamiento".

hook_user

mnico's picture

La idea es que cuando un usuario, con el permiso adecuado, entra al perfil de otro usuario, este pueda ver un link que diga "Agregar tratamiento para el usuario [name]", donde [name] es el nombre del usuario correspondiente al perfil que se esta mirando, y el hipervinculo de dicha frase es "node/add/tratamiento/[uid]", donde [uid] corresponde al mismo usuario de dicho perfil. Para lograr esto deberías implementar un hook_user

<?php


/**
* Implementando hook_user
*/
function mimodulo_user($op, &$edit, &$account, $category = NULL){
  switch(
$op){
    case
'view':
     
//Inventando el permiso del rol para agregar tratamientos a usuarios
     
if(user_access('agregar tratamiento a usuarios'))
       
$account->content['link_tratamiento'] = l('Agregar tratamiento para el usuario ' . $account->name, 'node/add/tratamiento/' . $account->uid);
      break;

}

}
?>

Saludos

TXANKETE's picture

Dadas mis limitaciones de programación, he vuscado una solución alternativa para poder tener predeterminado un campo del tipo User Reference en función del contexto de usuario del que provenga al cargar la página.
Lo que he hecho es utilizar dos modulos: "Prepopulate" y "Menu Tokens". Con estos modulos preparo un menú que se muestra en la página de cada usuario y con un enlace como este:
http://www.mi-sitio.com/node/add/content-type?edit[field_usuario][und]=[user:uid]
Lo pongo aquí por si a alguien más le puede resultar útil.
Gracias por la colaboración a mmico
Saludos!

Spanish

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: