Главная Новости

Добавляем уникальный класс для ссылок в пользовательском меню Drupal 7

Опубликовано: 09.10.2017

Автор https://api.drupal.org/comment/13834#comment-13834 предложил решение на мой взгляд несколько мудреное, т.к. не всегда целесообразно производить столько манипуляций для простого добавления уникальных классов к ссылкам пользовательских меню в Drupal 7.

Работаем с template.php

Полезная информация

theme_menu_tree($variables)

theme_menu_link(array $variables)

Для просмотра информации (например, что бы узнать программное имя меню) о меню которое вам необходимо кастомизировать используйте стандартную конструкцию:

// Show variables for the menu_link array function YOURTHEMENAME_menu_link(array $variables) { // return print_r($variables['element']); return print '<pre>' . print_r($variables['element']) . print '</pre>'; }

Условимся на том, что нам необходимо добавить в обертку меню свой класс и присвоить к каждому пункту уникальный класс .

Далее пишем функцию для препроцесса обертки меню если необходимо убрать\добавить свои стили:

function YOURTHEMENAME_menu_tree__menu_NAME(&$variables) { return '<ul class="my-menu-class nav">' . $variables['tree'] . '</ul>'; }

Что бы не мудрить с уникальностью имен воспользуемся теми, что уже есть в базе — mlid

function YOURTHEMENAME_menu_link__menu_NAME(array $variables) { $element = $variables['element']; $sub_menu = ''; // Here we put our uniq class for menu links $element['#attributes']['class'][] = 'my-uniq-class-' . $element['#original_link']['mlid'] . ''; if ($element['#below']) { $sub_menu = drupal_render($element['#below']); } $output = l($element['#title'], $element['#href'], $element['#localized_options']); return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n"; }

Готово!

Новости

Карта
rss