web-dev-qa-db-ja.com

現在ログインしているユーザーが所有するコンテンツを取得するにはどうすればよいですか?

ユーザーは1つのノードのみの所有者であり、ログイン時にユーザーを唯一の所有ノードにリダイレクトしたいと思います。

ログインしているユーザーしかわからない場合、ノードのコンテンツを取得するにはどうすればよいですか?

5
Ek Kosmos

これは私がそれをしている方法です:

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
Ek Kosmos

hook_user_login-> http://api.drupal.org/api/drupal/modules--user--user.api.php/functionを見てください。/hook_user_login/7 。これは、ユーザーID(uid)でノードID(nid)を検索し、次にdrupal_gotohttp://api.drupal.org/api/drupal/includes--common.inc/function/drupal_goto/7

ログインフォームにhook_form_alterを使用してカスタマイズを行うオプションもあります。これは、D6ソリューションと考えることができます。これらの提案が質問に対応していない場合は、詳細を提供する必要があります。

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

これはあなたのnidを取得します。

2
Berdir

注:この回答は無視してください(理由についてはコメントを参照してください)。


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

他の提案は確かに有効ですが、より「Drupal」の方法であるため、私はこの方法でこれを実行するように誘惑されます。安全のため、SQLステートメントに制限を設けていることに注意してください。

0
Chris Cohen