Drupal. Добавление дополнительных классов при выводе меню, для удобства верстки

Аватар пользователя artur.baranok
Опубликовано вт, 07/14/2015 - 12:59 пользователем artur.baranok
Форумы: 

Очень часто приходится верстать шаблоны, и иногда сталкиваюсь с проблемой отверcтать пункт меню, который находится в середине вывода. Друпал по умолчанию формирует меню в ненумерованный список. Первому и последнему тегу li присваивается класс first и last соответственно. Если нужно как-то приукрасить в css именно их, то с этим справиться не составит труда. А что если нужно, допустим, в пятом из десяти пунктов меню сделать меньше или больше шрифт? Классы все одинаковые - leaf - и класс тега а ничем не отличается от других.

Открываю на редактирование файлик menu.inc, который можно найти в папке /includes. Нахожу функции theme_menu_item и theme_menu_tree, копирую их в файл темы template.php, переименовав в phptemplate_menu_item и phptemplate_menu_tree:

1. Выше этих функций объявляю глобальную переменную, например global $menuli;
2. В функцию phptemplate_menu_tree до return добавляю такие две строчки:  global $menuli; $menuli=0;
3. В функции phptemplate_menu_item до return добавляю три строчки: global $menuli;     $menuli++;     $class.= '  menuli'.$menuli;

В результате при выводе меню появится дополнительный класс menuli с порядковым номером, что упростит верстку отдельного пункта.

Вот пример вывода:
<li class="leaf menuli3"
  <a title="" href="/">Тарифы</a>
</li>
<li class="leaf menuli4">
  <a title="" href="/" >Калькулятор</a>
</li>