web-dev-qa-db-ja.com

新しいノードを作成するときにメニューリンクを有効にする方法は?

プログラムでメニューリンクを有効にしようとしています。これを行う方法を次に示します。

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にはmlidplidなどの他の変数があり、0に設定されています。 menu_namemain-menu:0に設定され、modulemenuに設定されます。

1
Ek Kosmos

menu_link_saveを使用して、メニュー項目を個別に作成する必要があります

$item = array(
  'menu_name' => 'main-menu',
  'link_title' => $node->title,
  'link_path' => 'node/'. $node->nid,
);
menu_link_save($item);
4
Derek Ahmedzai

リンクを手動で作成する必要はありません。 menu_node_save() フックは、次の変数を指定した場合、ノードを保存するときにリンクの作成を自動的に処理します。

  $node->menu['enabled'] = TRUE;
  $node->menu['link_title'] = t('My title');
  $node->menu['description'] = ''; // Needed even if empty to avoid notices.
1
peterpoe