У меня есть узел, я хочу, это - меню. Насколько я могу сказать, node_load не включает его. Очевидно, это тривиально для записи запроса для нахождения его на основе пути node/nid
, но есть ли Способ Drupal сделать это?
Модуль узла меню предоставляет API для этого.
Вы можете прочитать документацию (Doxygen) в коде. Я думаю, что нужная вам функциональность обеспечивается методом menu_node_get_links ($ nid, $ router = FALSE)
:
/**
* Get the relevant menu links for a node.
* @param $nid
* The node id.
* @param $router
* Boolean flag indicating whether to attach the menu router item to the $item object.
* If set to TRUE, the router will be set as $item->menu_router.
* @return
* An array of complete menu_link objects or an empy array on failure.
*/
Возвращается ассоциативный массив mlid => объект меню
. Вероятно, вам понадобится только первый, чтобы он выглядел примерно так:
$arr = menu_node_get_links(123);
list($mlid) = array_keys($arr);
В противном случае вы можете опробовать предложение в ветке на форумах Drupal :
Используйте узел / [nid]
в качестве аргумента $ path для:
function _get_mlid($path) {
$mlid = null;
$tree = menu_tree_all_data('primary-links');
foreach($tree as $item) {
if ($item['link']['link_path'] == $path) {
$mlid = $item['link']['mlid'];
break;
}
}
return $mlid;
}