Приветствую сообщество!
Не так давно возникла необходимость темиции меню — нужно было добавить js tooltip с описанием для каждого пункта. Руководствовался данной темой (единственное, что удалось найти).
Суть способа. Создаем меню, создаем отдельный шаблон с именем block-menu-menu-name.tpl.php для блока этого меню, в который вставляем код следующего содержания:
<?php
$menu = menu_navigation_links('menu-name'); //получем массив с элементами меню
print get_themed_menu($menu); // выводим меню, темизируя его своей функцией get_themed_menu()
?>
В тоже время мы можем написать в файле темизации блока следующий код:
<?php
print $block->content;
?>
и получим стандартный вывод меню Drupal.
Тоесть получается, что содержимое блока уже было вычислено(был сделан запрос к базе, сформирован и темизирован HTML код меню). И после этого мы повторно делаем тоже самое, только по-своему.
Может конечно, я чего то не понимаю, но не проще ли создавать обычный блок, в котором напрямую вызывать код, описанный в первом примере, а блок меню просто не показывать ни в одном регионе, для того, чтобы его содержимое не вычислялось?
Поделитесь своими соображениями по данной теме...
Комментарии
лучше я так думаю, делать темизацию через template.php, есть такие функции как theme_menu_item, theme_menu_item_link, theme_menu_tree, и т.п., хотя не спорю что и ваш вариант с созданием обычного блока тоже более лучшее решение, чем тупое перекрытие отработанного кода друпала своей заменой в шаблоне
Спасибо за ответ. А можно поподробнее об этом? Есть примеры?