Come ottenere il contenuto di proprietà del momento utente connesso?
-
16-10-2019 - |
Domanda
Un utente è il proprietario di un solo nodo, e voglio reindirizzare l'utente, al momento del login, al suo nodo unica di proprietà.
Come posso ottenere il contenuto del nodo se conosco solo l'utente connesso?
Soluzione
Questo è come io ho farlo:
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);
}
Altri suggerimenti
Date un'occhiata a hook_user_login -> http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_login/7 . Questo è dove è possibile aggiungere il proprio codice personalizzato per fare le cose come cercare l'ID del nodo (NID) per ID utente (UID) e quindi emettere un drupal_goto ( http://api.drupal.org/api/drupal/includes--common.inc/ funzione / drupal_goto / 7 )
C'è anche la possibilità di fare la personalizzazione con hook_form_alter al form di login che potrebbe essere considerato più di una soluzione D6. Dovrete fornire maggiori dettagli se questi suggerimenti non si rivolgono alla tua domanda.
$nid = db_query('SELECT nid FROM {node} WHERE uid = :uid AND type = :type', array(':uid' => $user->uid, ':type' => $node_type))->fetchField():
Questo ti porterà la nid.
. Nota: si prega di ignorare questa risposta (vedi i commenti per il motivo)
$nid = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.uid', $user->uid)
->range(0, 1)
->fetchField()
sarei tentato di farlo in questo modo dal momento che è il modo più 'Drupal', anche se gli altri suggerimenti sono certamente valide. Si noti che ho messo un limite al istruzione SQL per la sicurezza.