как получить все пункты меню ниже определенного родителя в drupal?

Мне действительно только нужны 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;
}

Есть ли?

14
задан sprugman 26 April 2010 в 20:59
поделиться

2 ответа

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();
}
17
ответ дан 1 December 2019 в 06:35
поделиться

Вы просматривали модуль Блок меню ? Еще немного подробностей об этом модуле (со страницы проекта):

... Вы когда-нибудь использовали функцию ссылок в главном и дополнительном меню в своей теме и задавались вопросом: «Как, черт возьми, мне отображать какие-либо пункты меню глубже этого?»

Что ж, это то, что делает этот модуль. Он предоставляет настраиваемые блоки деревьев меню, начиная с любого уровня любого меню. И более!

Итак, если вы используете только функцию ссылок в главном меню своей темы, вы можете добавить и настроить блок «Главное меню (уровни 2+)». Этот блок появится, когда вы окажетесь на одной из страниц главного меню, и будет отображать дерево меню для 2-го уровня (и более глубокого) вашего главного меню и будет расширяться при перемещении вниз по дереву. Вы также можете ограничить глубину дерева меню (например, «Главное меню (уровни 2–3)») и / или развернуть все дочерние подменю (например, «Главное меню (развернутые уровни 2+)»).

3
ответ дан 1 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: