特定の状態(例:ユーザーがログインしているなど)に応じて、メニュー項目をナビゲーションメニューに動的に追加したい。これはtheme_preprocessで行うと思いますが、Tweakするvarを見つけることができないようです。
間違った場所を探していますか?これを行うのに最適な場所はどこですか?最適な方法は何ですか?
チェックアウト hook_menu() をお勧めします。たとえば、モジュールまたはtemplate.phpに配置された次のhook_menu()
の実装は、匿名ユーザーのナビゲーションメニューにメニュー項目を挿入する必要があります。さまざまなユーザーロールにhook_menu()
を実装する方法の良い例については、Userモジュールをご覧ください。
function MODULE_menu() {
$items = array();
$items['the/menu/path'] = array(
'access callback' => 'user_is_anonymous', //or 'user_is_logged_in' to check if logged in
'type' => MENU_NORMAL_ITEM,
'menu_name' => 'navigation',
'title' => t('Title of Menu Item'),
);
return $items;
}
menu_link_save()
を使って作成できると思います。
_$item = array(
'link_path' => 'my_path',
'link_title' => 'title',
'menu_name' => 'header-top-menu', // Menu machine name, for example: main-menu
'weight' => 0,
'language' => $node->language,
'plid' => 0, // Parent menu item, 0 if menu item is on top level
'module' => 'menu',
);
menu_link_save($item);
_
私がhook_update_N()
実装で示しているコードを使用できます。
pdate.phpによるDrupal 7メニューリンクの更新 も参照してください。