Темизация и производительность. Как правильно темизировать меню?

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

Аватар пользователя rumzes rumzes 27 ноября 2009 в 11:22

Приветствую сообщество!

Не так давно возникла необходимость темиции меню — нужно было добавить 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 код меню). И после этого мы повторно делаем тоже самое, только по-своему.

Может конечно, я чего то не понимаю, но не проще ли создавать обычный блок, в котором напрямую вызывать код, описанный в первом примере, а блок меню просто не показывать ни в одном регионе, для того, чтобы его содержимое не вычислялось?

Поделитесь своими соображениями по данной теме...

Комментарии

Аватар пользователя kosilko kosilko 27 ноября 2009 в 15:18

"rumzes" wrote:
Может конечно, я чего то не понимаю, но не проще ли создавать обычный блок, в котором напрямую вызывать код, описанный в первом примере, а блок меню просто не показывать ни в одном регионе, для того, чтобы его содержимое не вычислялось?

лучше я так думаю, делать темизацию через template.php, есть такие функции как theme_menu_item, theme_menu_item_link, theme_menu_tree, и т.п., хотя не спорю что и ваш вариант с созданием обычного блока тоже более лучшее решение, чем тупое перекрытие отработанного кода друпала своей заменой в шаблоне

Аватар пользователя rumzes rumzes 27 ноября 2009 в 15:35

kosilko wrote:

лучше я так думаю, делать темизацию через template.php, есть такие функции как theme_menu_item, theme_menu_item_link, theme_menu_tree

Спасибо за ответ. А можно поподробнее об этом? Есть примеры?