Меню в блоке, не могу вывести число дочерних меню.

Главные вкладки

Аватар пользователя Gesha Gesha 14 марта 2010 в 1:32

Привет, всем разработчикам и просто любителям друпал. Собираю себе любительский сайт, делаю все максимально удобно. Возникла задача сделать вот так:

ВОПРОС:
стандартными методами у меня в блоке получается меню в виде:

Блогов
-- мой блог
-- твой блог

Сайтов
-- мой сайт
-- твой сайт
-- наш сайт

ЗАДАЧА:
выводить число дочерних меню к примеру в меню "У Вас" – два дочерних меню.

Желаемая структура:

Блогов [2]
-- мой блог
-- твой блог

Сайтов [3]
-- мой сайт
-- твой сайт
-- наш сайт

Подскажите где перехватывать код и как правильней. Зарание спасибо!

Комментарии

Аватар пользователя XyuH91wka XyuH91wka 14 марта 2010 в 1:54

Зря ты так, переформулируй вопрос, тут люди знающие уж больно к этому придирчивы, а у тебя совсем не понятно чего ты хочешь )

Аватар пользователя Tzota Tzota 15 марта 2010 в 2:27

Ну, я, конечно, в друпале без году неделя, но раз других предложений всё равно нет... Заодно апну тему, може кто из гуру поругает и всему научит )))

Нашёл страшную вещь - theme_menu_item_link
Пошёл в \themes\garland\template.php и дописал в конце скопипащенную реализацию, переименовав в phptemplate_menu_item_link, по имени используемого енжина:

<?php
function phptemplate_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
    
$link['localized_options'] = array();
  }

  

dpm($link); // а вот тут решил посмотреть, что за зверь этот $link (для dpm нужен модуль devel. Ну, думаю, простой var_export() тоже позволит посмотреть)

  

return l($link['title'] . '*'$link['href'], $link['localized_options']); // а тут к тайтлу добавил звёздочку, чтобы удостовериться, что функция прооверрайдилась
}
?>

Ну и увидел кучу интересного. Например у $link есть ['menu-name'], чтобы можно было отсечь только интересующие тебя блоки меню. А ещё есть ['has_children'], чтобы понять, ветка это или уже лист.

Собссно, если этот способ подойдёт - то дальше уже можно обсудить, как посчитать количество детишек у данного раздела меню и вывести вместо звёздочки.