Как получить контент, принадлежащий пользователю в настоящее время в настоящее время?
-
16-10-2019 - |
Вопрос
Пользователь является владельцем только одного узла, и я хочу перенаправить пользователя во время входа в систему на его единственный узел.
Как я могу получить контент узла, если я знаю только пользователя, зарегистрированного?
Решение
Вот как я это сделал:
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);
}
Другие советы
Взгляни на 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. Вам придется предоставить более подробную информацию, если эти предложения не решают ваш вопрос.
$nid = db_query('SELECT nid FROM {node} WHERE uid = :uid AND type = :type', array(':uid' => $user->uid, ':type' => $node_type))->fetchField():
Это даст вам NID.
Примечание. Пожалуйста, не обращайте внимания на этот ответ (см. Комментарии к почему).
$nid = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.uid', $user->uid)
->range(0, 1)
->fetchField()
Я испытываю желание сделать это таким образом, так как это скорее «Drupal», хотя другие предложения, безусловно, действительны. Обратите внимание, что я положил ограничение на оператор SQL для безопасности.