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

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

  •  16-10-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

これが私がそれをする方法です:

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)を検索してから、Aを発行するなど、独自のカスタムコードを追加することができる場所です。 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()

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

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top