Как получить контент, принадлежащий текущему вошедшему в систему пользователю?


Пользователь является владельцем только одного узла, и я хочу перенаправить пользователя во время входа в систему на его единственный принадлежащий узел.

Как я могу получить содержимое узла, если я знаю только вошедшего в систему пользователя?

Author: kiamlaluno, 2011-03-22

4 answers

Вот как я это сделал:

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
Author: Ek Kosmos, 2011-03-22 10:54:53

Взгляните на hook_user_login -> http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_login/7 . Здесь вы можете добавить свой собственный пользовательский код для выполнения таких действий, как поиск идентификатора узла (nid) по идентификатору пользователя (uid), а затем выдать drupal_goto (http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_goto/7)

Также есть возможность выполнить настройку с помощью hook_form_alter для входа в систему форма, которую можно было бы рассматривать скорее как решение D6. Вам придется предоставить более подробную информацию, если эти предложения не отвечают на ваш вопрос.

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

Это даст вам nid.

 2
Author: Berdir, 2011-03-22 10:53:56

Примечание: пожалуйста, не обращайте внимания на этот ответ (см. Комментарии, почему).


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

У меня возникло бы искушение сделать это таким образом, так как это больше похоже на "Друпал", хотя другие предложения, безусловно, верны. Обратите внимание, что я установил ограничение на инструкцию SQL для обеспечения безопасности.

 0
Author: Chris Cohen, 2011-03-23 09:40:32