Drupalのタブを新しく追加する方法
↑こんな感じに追加する方法。
$item = array( 'link_path' => 'sandbox', 'link_title' => 'sandbox', // リンクのタイトル 'menu_name' => 'main-menu', // main-menuに追加 'module' => 'mymodule', 'router_path' => 'sandbox' ); menu_link_save($item);
.installファイルのhook_installあたりに書いておけば、
モジュールをインストールするとタブが新しく作られるなんて事も出来そう。
消し方はまた別途調査。
追記:
モジュールインストール時に実行する際は
router_pathに存在するパス(自身のものでもいいらしい)を設定しておかないと
ちゃんと登録されなかった。
メニューの消し方
$menuItem = menu_link_get_preferred('sandbox', 'main-menu'); menu_link_delete($menuItem['mlid']);
追記:
モジュールのinstall時、enable時に有効にする方法。
hook_modules_enabled時にメニューを構築してやる。
function mymodule_modules_enabled($modules){ if(in_array('mymodule', $modules)){ menu_rebuild(); // この段階でメニューを構築する。 $item = array( 'link_path' => 'sandbox', 'link_title' => 'sandbox', // リンクのタイトル 'menu_name' => 'main-menu', // main-menuに追加 'module' => 'mymodule', 'router_path' => 'sandbox' ); menu_link_save($item); } }
なんか、menu_rebuild()で最初にモジュール特有のメニューを
menu_routerに登録してやらないと孤立したメニューとみなされて
登録したメニューが消されてしまい、正しく登録できないみたい。
調べるのに4-5時間くらいかかった。Drupalツレーなー。