如何在创建节点时以编程方式创建菜单项?

spr*_*man 4 api drupal

我正在以编程方式创建一些节点,因此:

foreach ($titles as $t) {
    $n = new stdClass();
    $n->type = 'myType';
    $n->uid = 1;
    $n->title = $t;
    $menu = array();
    $menu['link_title'] = $t;
    $menu['menu_name'] = 'primary-links';
    // this attempt at placing the menu item in a particular place in the 
    // menu hierarchy didn't work:
    $menu['parent'] = 'primary-links:867';
    $menu['depth'] = 3;
    $menu['p1'] = '580';
    $menu['p2'] = '867';
    $n->menu = $menu;
    node_save($n);
}
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的菜单结构:

primary-links
    Parent 1
        Child 1
        Child 2
    Parent 2
        Child 3
Run Code Online (Sandbox Code Playgroud)

我希望新的菜单项显示为Child 3的子项.我能够在节点的同时创建菜单项,它们出现在正确的菜单中,但不在层次结构中的正确位置.我错过了什么?

Lar*_*arS 6

在drupal 7中你需要设置也启用为1(参见:menu_node_save()):

$node->menu = array(
  'link_title' => $node->title,
  'menu_name' => 'main-menu',
  'plid' => 0,
  'enabled' => 1,
);
Run Code Online (Sandbox Code Playgroud)

  • 如果未明确设置"enabled",则不会为节点创建新的菜单项.这个答案+1. (2认同)