プログラムでメニューリンクを有効にしようとしています。これを行う方法を次に示します。
function create_menu_link() {
$node = new stdClass();
$node->type = 'mytype';
node_object_prepare($node);
$node->menu['link-title'] = $menu_title;
node_save($node);
}
ただし、タイトルだけを設定しても機能しません。 $node->menu
にはmlid
やplid
などの他の変数があり、0
に設定されています。 menu_name
はmain-menu:0
に設定され、module
はmenu
に設定されます。
menu_link_save
を使用して、メニュー項目を個別に作成する必要があります
$item = array(
'menu_name' => 'main-menu',
'link_title' => $node->title,
'link_path' => 'node/'. $node->nid,
);
menu_link_save($item);
リンクを手動で作成する必要はありません。 menu_node_save() フックは、次の変数を指定した場合、ノードを保存するときにリンクの作成を自動的に処理します。
$node->menu['enabled'] = TRUE;
$node->menu['link_title'] = t('My title');
$node->menu['description'] = ''; // Needed even if empty to avoid notices.