匿名ユーザーのみにメニュー項目を表示する方法は?


6

匿名ユーザーのみのメインメニューに[今すぐ参加]タブを表示したい。

以前は、まさにそれを行うRole per per moduleモジュールを使用していました。

タブは1つだけなので、5行または10行のコードを使用します。どのフックを使用する必要があり、現在のユーザーロールを確認してメニュー項目を追加する(またはログインしているユーザーに対して非表示にする)機能は何ですか?


1
。あなたがパスを持つメニュー項目を作成するときにSweeeeeeeeetに記録された後Drupalは自動的に非表示になります「ユーザー/登録」ことが判明
ウヴェ・

1
回答を受け入れるか、ご自身で質問に答えて受け入れてください。質問を未回答のままにしておくと、多くの人々がここでやるべきことが何も残っていないことに気づくためだけにそれをチェックしに来るでしょう。
Alex Weber

回答:


10

最も簡単な方法はaccess callback、メニューリンクが指すパスのをオーバーライドすることだと思います。これはhook_menu_alter()、を使用してカスタムモジュールで行い、user_is_anonymous()コールバック関数として使用できます。

function MYMODULE_menu_alter(&$items) {
  $items['path/to/page']['access callback'] = 'user_is_anonymous';
}

このパスにメニューリンクを追加すると、Drupalのメニューシステムはアクセスコールバックを尊重し、ログインしているユーザーにはリンクが表示されません。

この方法を使用すると、ログインしているユーザーがページに直接アクセスできないことも確認できます。これはおそらく良いことです。


7
  1. ビューを作成し、匿名のみに表示を許可する
  2. ノードアクセスモジュールを使用して権限を設定する
  3. 匿名ユーザーのみが表示できるコンテンツの新しいコンテンツタイプを作成します。そのコンテンツを表示する権限を持つ唯一のユーザーとして匿名を設定します。
  4. そのページだけのカスタムモジュールを作成します。

3は私の選択したアプローチです。将来、追加の非メンバーコンテンツが必要になった場合にタイプを配置するという考えが気に入っています。


このように行うと、許可に基づいてメニューのコンテンツが自動的に非表示および表示されます
Aaron Ortega
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.