Автор 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";
}

Готово!

Теги: Drupal 7

Выразить благодарность

Если эта публикация оказалась для Вас полезной и вы хотите выразить свою благодарность, сделайте пожалуйста её репост в социальных сетях или на своём сайте.

Так же, Вы можете перевести любую сумму, которую посчитаете нужной на наш счёт, что сильно мотивирует к написанию новых полезных статей.

Комментарии: