ログインしていないときにユーザーメニューに「ログイン」を表示する


8

ユーザーメニューの[アカウント]と[ログアウト]を非表示にするコードはどこにあるのでしょうか。そのコードから学ぶためにちょうど好奇心が強い。このようなことを知りたい場合、どこを検索するかを知る方法はありますか?

このメニューに「ログイン」リンクを追加しましたが、誰もログインしていないときにこれを非表示にしたいと思います。

回答:


13

リンクで何かが発生した場合、のコードを調べる必要がありますhook_menu()。次に、それがどのモジュールに含まれているかを推測する必要があります。この場合、コアUserモジュールを見てください。

function user_menu() {
  $items['user/login'] = array(
    'title' => 'Log in',
    'access callback' => 'user_is_anonymous',
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );

  return $items;
}

'access callback' => 'user_is_anonymous',行に注意してください。これは、匿名である(つまり、ログインしていない)場合にのみこれを実行できることを意味します。これは、パスとして「user / login」を使用してメニューエントリを作成できることを意味します。リンクは、ログアウトしたときにのみ表示されます。


16

メニューリンクをに追加user/loginできます。これのアクセスコールバックは、匿名ユーザーにのみ表示されることを確認します。同様にuser/logout、ログインしたユーザーにのみ表示されます。

これらのcallbacks()の定義は、他の回答で述べたように、 user_menu()


+1と同じことが当てはまりますuser/register-メニューUIを介して通常の方法でリンクを作成します。これは、自動的にログインしていないユーザーにのみ表示されます。
user56reinstatemonica8 2016年

1

user_menu()ユーザーモジュールのメニュー定義を確認してください。アクセスコールバックは、メニュー項目がいつ表示されるかを決定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.