web-dev-qa-db-ja.com

許可に基づいてリンクを表示/非表示にする方法は?

現在のユーザーが特定の権限を持っている場合、メインメニューからリンクを非表示/表示する方法を探しています。メニュー項目はすでに作成されており、メニュー項目はhook_node_access()によって制御されるノードにリンクしています。

7
Camsoft

デフォルトでは、Drupalは、ユーザーがアクセスできないすべてのメニュー項目を非表示にするため、メニュー項目がリンクしているページに選択されたアクセスを要求することが最も簡単です。に。

4
googletorp

あなたができることは hook_menu_alter() を使用して "node /%node"に関連付けられたアクセスコールバックを変更し、次に node_access( )node_access()と同様に処理したい特定のケースがあります。たとえば、「ノードアクセスのバイパス」権限を持つユーザーは、常にノードにアクセスします。

function mymodule_menu_alter(&$items) {
  if (isset($items['node/%node'])) {
    $items['node/%node']['access callback'] = 'mymodule_node_access';
  }
}

アクセスコールバックは、リンクを表示できるユーザー、およびユーザーがブラウザーのアドレスバーに直接URLを書き込んだときにページにアクセスできるユーザーを決定することを考慮してください。

2
kiamlaluno

drupal module menu_item_visibility

プロジェクトページを引用するには:

たとえば、/ userを指す「マイアカウント」リンクを作成する場合、匿名ユーザーと登録済みユーザーの両方が/ userパスにアクセスできるため、匿名ユーザーが技術的にアカウントを持っていない場合でも、両方にリンクが表示されます。このモジュールを使用すると、「マイアカウント」リンクのみを登録ユーザーに表示し、匿名ユーザーには非表示にすることができます。

このモジュールは、ブロックの表示設定に使用されているものとまったく同じUIを使用して親しみやすくしています。

または menu_views モジュール-メニュー生成へのビューベースのアプローチを提供します(ユーザーに基づいて含めると思います)

1
therobyouknow