一个用户仅是一个节点的所有者,我想在登录时间将用户重定向到他唯一拥有的节点。

如果我只知道登录的用户,我该如何获取节点内容?

有帮助吗?

解决方案

这就是我这样做的方式:

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. 。在这里,您可以添加自己的自定义代码来执行诸如通过用户ID(UID)查找节点ID(NID)的事情,然后发布 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归因
scroll top