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

drupal.stackexchange https://drupal.stackexchange.com/questions/1147

  •  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 для безопасности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top