現在のユーザーが特定の権限を持っている場合、メインメニューからリンクを非表示/表示する方法を探しています。メニュー項目はすでに作成されており、メニュー項目はhook_node_access()によって制御されるノードにリンクしています。
デフォルトでは、Drupalは、ユーザーがアクセスできないすべてのメニュー項目を非表示にするため、メニュー項目がリンクしているページに選択されたアクセスを要求することが最も簡単です。に。
あなたができることは 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を書き込んだときにページにアクセスできるユーザーを決定することを考慮してください。
drupal module menu_item_visibility
プロジェクトページを引用するには:
たとえば、/ userを指す「マイアカウント」リンクを作成する場合、匿名ユーザーと登録済みユーザーの両方が/ userパスにアクセスできるため、匿名ユーザーが技術的にアカウントを持っていない場合でも、両方にリンクが表示されます。このモジュールを使用すると、「マイアカウント」リンクのみを登録ユーザーに表示し、匿名ユーザーには非表示にすることができます。
このモジュールは、ブロックの表示設定に使用されているものとまったく同じUIを使用して親しみやすくしています。
または menu_views モジュール-メニュー生成へのビューベースのアプローチを提供します(ユーザーに基づいて含めると思います)