Как включить ссылку меню при создании нового узла?
Я пытаюсь включить ссылку меню программно, вот как я это делаю:
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
.
1
2 answers
Вам нужно будет создать пункт меню отдельно, используя menu_link_save
$item = array(
'menu_name' => 'main-menu',
'link_title' => $node->title,
'link_path' => 'node/'. $node->nid,
);
menu_link_save($item);
5
Author: Derek Ahmedzai, 2012-03-04 02:21:15
Вам не нужно создавать ссылку вручную. Крючок 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
Author: peterpoe, 2013-05-09 11:35:02