Вывод всех пунктов активного уровня меню

Аватар пользователя Vic-tor Vic-tor 25 июня 2008 в 1:00

Есть ли модуль или сниппет, который выводит все пункты активного уровня меню?

Пример меню:

  • Автомобили
    • BMW
    • Toyaota
  • Писатели
    • Пушкин
    • Толстой
    • Тютчев

Если выбран пункт "Пушкин" - надо вывести:

  • Пушкин
  • Толстой
  • Тютчев

Если выбран пункт "Писатели" - надо вывести:

  • Автомобили
  • Писатели

Комментарии

Аватар пользователя Splinter Splinter 25 июня 2008 в 9:29

попробуйте вот так:

<?
$active_level = 1;
$trail = array();
$mid = menu_get_active_nontask_item();

while ($mid && ($item = menu_get_item($mid)))
{
array_unshift($trail, $mid);
$mid = $item['pid'];
}
echo menu_tree($trail[$active_level]);
?>

Аватар пользователя Vic-tor Vic-tor 25 июня 2008 в 13:43

Спасибо за ответы, но это не совсем то, что надо.

Таким способом выводится ВСЁ меню со всем вложениями (всё дерево),
а нужно вывести только все пункты текущего меню БЕЗ вложенных подпунктов.

Поясню на другом примере меню:

  • Автомобили
    • BMW
    • Toyaota
  • Писатели
    • Пушкин
      • Сказки
      • Поэмы
    • Толстой
      • Романы
      • рассказы
    • Тютчев

Если выбран пункт "Пушкин" - надо вывести ТОЛЬКО:

  • Пушкин
  • Толстой
  • Тютчев

без вложенных меню.

Если выбран пункт "Сказки" - надо вывести ТОЛЬКО:

  • Сказки
  • Поэмы
Аватар пользователя Vic-tor Vic-tor 26 июня 2008 в 0:26

Ещё бы проверку на существование Пунктов меню прикрутить - идеально бы было.

А так,
применил вот здесь

Аватар пользователя cardina1 cardina1 26 июня 2008 в 9:39

Что значит существование? Если их больше одного?

<?
$item = menu_get_item(menu_get_active_nontask_item());
$parent = menu_get_item($item['pid']);
if (count($parent['children']) > 1)
{
       echo "<ul>";
       foreach($parent['children'] as $itemID)
       {
              echo theme_menu_item($itemID);
       }
      echo "</ul>";
}
?>