現在ログインしているユーザーが所有するコンテンツを取得するにはどうすればよいですか?
-
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ステートメントに制限を設けたことに注意してください。
所属していません drupal.stackexchange