it-swarm-es.com

¿Cómo obtener el contenido propiedad del usuario que ha iniciado sesión actualmente?

Un usuario es el propietario de un solo nodo y quiero redirigir al usuario, en el momento del inicio de sesión, a su único nodo de propiedad.

¿Cómo puedo obtener el contenido del nodo si solo conozco al usuario que inició sesión?

5
Ek Kosmos

Así es como lo he hecho:

function MYHOOK_user_login(&$edit, $account) {
    global $user;
    $nid = db_query('SELECT nid FROM {node} WHERE uid = :uid', array(':uid' => $user->uid))->fetchField();
    drupal_goto('node/' . $nid);
}
3
Ek Kosmos

Eche un vistazo a hook_user_login -> http://api.drupal.org/api/drupal/modules--user--user .api.php/function/hook_user_login/7 . Aquí es donde puede agregar su propio código personalizado para hacer cosas como buscar el ID de nodo (nid) por ID de usuario (uid) y luego emitir un drupal_goto ( http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_goto/7 )

También existe la opción de hacer la personalización con hook_form_alter al formulario de inicio de sesión, que podría considerarse más una solución D6. Deberá proporcionar más detalles si estas sugerencias no responden a su pregunta.

2
DeeZone
$nid = db_query('SELECT nid FROM {node} WHERE uid = :uid AND type = :type', array(':uid' => $user->uid, ':type' => $node_type))->fetchField():

Esto te dará el nid.

2
Berdir

Nota: ignore esta respuesta (consulte los comentarios para saber por qué).


$nid = db_select('node', 'n')
  ->fields('n', array('nid'))
  ->condition('n.uid', $user->uid)
  ->range(0, 1)
  ->fetchField()

Me sentiría tentado a hacerlo de esta manera, ya que es más el estilo 'Drupal', aunque las otras sugerencias son ciertamente válidas. Tenga en cuenta que he puesto un límite a la declaración SQL por seguridad.

0
Chris Cohen