匿名ユーザーのみのメインメニューに[今すぐ参加]タブを表示したい。
以前、私は ロールごとのメニュー モジュールを使用しました。
タブは1つしかないので、5行または10行のコードを使用します。どのフックを使用する必要がありますか?現在のユーザーロールを確認してメニュー項目を追加する(またはログインしているユーザーに対して非表示にする)機能は何ですか?
メニューリンクが指すパスの_access callback
_をオーバーライドするのが最も簡単な方法だと思います。 hook_menu_alter()
を使用してカスタムモジュールでこれを行うことができ、コールバック関数としてuser_is_anonymous()
を使用します。
_function MYMODULE_menu_alter(&$items) {
$items['path/to/page']['access callback'] = 'user_is_anonymous';
}
_
このパスにメニューリンクを追加すると、Drupalのメニューシステムはアクセスコールバックを尊重し、ログインしているユーザーにはリンクが表示されません。
この方法を使用すると、ログインしているユーザーがページに直接アクセスできないことも確認できます。これはおそらく良いことです。
3は私の選択したアプローチです。将来、追加の非メンバーコンテンツが必要になった場合に備えて、タイプを配置するという考えが気に入っています。