web-dev-qa-db-ja.com

メインメニュー項目を非表示にするにはどうすればよいですか?

一部のノードの所有者であるユーザーがいて、各ノードのメインメニューにメニューリンクがあります。ユーザーは自分が所有するノードのみを表示でき、他のユーザーのノードは表示できません。

ここでの問題は、すべてのユーザーに対して、次の画像のようにメニューが表示されることです。現在のユーザーが所有するノードと現在のユーザーが所有していないノードの両方のリンクが表示されます。

screenshot

ログインしたユーザーが所有するノードに対応するメニュー項目のみを表示したい。これどうやってするの?

4
Ek Kosmos

Drupalは、ユーザーがアクセスできないパスのメニュー項目を非表示にします。ただし、これが機能するには、そのメニュー項目のアクセスコールバックがFALSEを返す必要があります。代わりにメニューコールバックでアクセス制御を処理する場合、Drupalはユーザーがアクセス権を持っていないことを知らず、メニューを表示します。

解決策は、ノードに既存のものを使用できない場合にカスタムアクセスコントロールモジュール/関数を実装することです。

4
googletorp

アクセスを制御するメニューエントリごとに、 hook_men (http://api.drupal.org/api/drupal/modules--system--system.api.php/ function/hook_menu/7)配列値のセットアップ?これらの配列エントリごとに必要なプロパティは、「アクセスコールバック」です。ユーザーがこのメニューアイテムへのアクセス権を持っている場合はTRUEを返し、そうでない場合はFALSEを返す関数です。

ターゲットで ser_access($ string、$ account = NULL) (http://api.drupal.org/api/drupal/modules--user--user.module/function/user_access)を使用しますこの参照に基づいて選択したアクセス許可の値:( http://drupal.org/node/132202

2
DeeZone

(この機能を実行するためのモジュールを提供する)以下の回答が見つかります...

ユーザーロールに基づいて1つのメニュー項目のみを表示/非表示にするにはどうすればよいですか?

...有用:

Drupal menu_per_roleモジュール:

https://drupal.stackexchange.com/a/29545

Drupalメニュー項目の可視性。

https://drupal.stackexchange.com/a/30934

0
therobyouknow