Вы здесь

Как добавить свой класс при выводе меню с подпунктами

0

Вопрос таков: как мне добавить классы к тегу ul и a второй или третей уровни вложености?

Вывожу меню так:

    <?php
    $tree = menu_tree_page_data('main-menu');
    $main_menu = menu_tree_output($tree);
    print drupal_render($main_menu);
    ?>

Меню сейчас такое:

 <ul class="menu"><li class="first leaf"><a href="/" title="" class="active">Главная</a></li>
    <li class="last expanded"><a href="/" title="">Пункт 1</a>

    <ul class="menu">
      <li class="first leaf"><a href="/">Подпункт 1</a></li>
      <li class="leaf"><a href="/">Подпункт 2</a></li>
      <li class="leaf"><a href="/">Подпункт 3</a></li>
      <li class="last leaf"><a href="/">Подпункт 4</a></li>
    </ul>
</li>
    </ul>
Версия Drupal: 
7.x
Категория: 
Menu APITheming
Вопрос задан 28.02.2016 - 23:23

Ответы

2
/**
 * Implements hook_theme_registry_alter().
 */
function modulename_theme_registry_alter(&$theme_registry) {
  array_unshift($theme_registry['menu_tree']['preprocess functions'], 'modulename_prepreprocess_menu_tree');
}

/**
 * Pre-preprocess fucntion for theme_menu_tree().
 */
function modulename_prepreprocess_menu_tree(&$vars) {
  $first_element_key = current(element_children($vars['tree']));
  $first_element = $vars['tree'][$first_element_key];
  $vars['menu_depth'] = $first_element['#original_link']['depth'];
}

После этого в theme_menu_tree будет доступна переменная $menu_depth.

В theme_menu_link есть $element['#original_link']['depth'].

Ответ дан 29.02.2016 - 00:04
Аватар пользователя xandeadx
xandeadx
1542