Мне действительно только нужны mlid и текст заголовка для первого уровня ниже определенного пункта меню. Вот то, что я делаю в данный момент. (Это работает, но я подозреваю, что может быть больше drupal-y пути.):
/**
* Get all the children menu items below 'Style Guide' and put them in this format:
* $menu_items[mlid] = 'menu-title'
* @return array
*/
function mymod_get_menu_items() {
$tree = menu_tree_all_data('primary-links');
$branches = $tree['49952 Parent Item 579']['below']; // had to dig for that ugly key
$menu_items = array();
foreach ($branches as $menu_item) {
$menu_items[$menu_item['link']['mlid']] = $menu_item['link']['title'];
}
return $menu_items;
}
Есть ли?
afaik, there is not (I hope I am wrong). Пока, вместо того, чтобы копаться в уродливых ключах, вы можете превратить свою функцию в более абстрактную вспомогательную функцию, просто добавив foreach ($tree). затем вы можете использовать свою собственную логику для вывода того, что вам нужно (mlid, в данном случае). вот мое предложение:
/**
* Get the children of a menu item in a given menu.
*
* @param string $title
* The title of the parent menu item.
* @param string $menu
* The internal menu name.
*
* @return array
* The children of the given parent.
*/
function MY_MODULE_submenu_tree_all_data($title, $menu = 'primary-links') {
$tree = menu_tree_all_data($menu);
foreach ($tree as $branch) {
if ($branch['link']['title'] == $title) {
return $branch['below'];
}
}
return array();
}
Вы просматривали модуль Блок меню ? Еще немного подробностей об этом модуле (со страницы проекта):
... Вы когда-нибудь использовали функцию ссылок в главном и дополнительном меню в своей теме и задавались вопросом: «Как, черт возьми, мне отображать какие-либо пункты меню глубже этого?»
Что ж, это то, что делает этот модуль. Он предоставляет настраиваемые блоки деревьев меню, начиная с любого уровня любого меню. И более!
Итак, если вы используете только функцию ссылок в главном меню своей темы, вы можете добавить и настроить блок «Главное меню (уровни 2+)». Этот блок появится, когда вы окажетесь на одной из страниц главного меню, и будет отображать дерево меню для 2-го уровня (и более глубокого) вашего главного меню и будет расширяться при перемещении вниз по дереву. Вы также можете ограничить глубину дерева меню (например, «Главное меню (уровни 2–3)») и / или развернуть все дочерние подменю (например, «Главное меню (развернутые уровни 2+)»).