Свой уникальный класс к первому тегу ul (а их несколько)

Аватар пользователя Rest Rest 18 июня 2019 в 10:25

Пытаюсь сделать вертикальное выпадающее меню.

Воспользовался модулем taxonomy menu block.

У него функция для переопределения вывода html такая:

<?phpfunction bootstrap_subtheme_mobi_taxonomy_menu_block($variables) {
    
  $tree = $variables['items'];
  $config = $variables['config'];

  $num_items = count($tree);
  $i = 0;
  $output = '<ul>';
   
  foreach ($tree as $tid => $term) {
    $i++;
    // Add classes.
    $attributes = array();
    if ($i == 1) {
      $attributes['class'][] = 'first';
     
    }
    if ($i == $num_items) {
      $attributes['class'][] = 'last';
    }
    if ($term['active_trail'] == '1') {
      $attributes['class'][] = 'active-trail';
    }
    if ($term['active_trail'] == '2') {
      $attributes['class'][] = 'active';
    }

    // Alter link text if we have to display the nodes attached.
    if (isset($term['nodes'])) {
      $term['name'] = $term['name'] . ' (' . $term['nodes'] . ')';
    }

    // Set alias option to true so we don't have to query for the alias every
    // time, as this is cached anyway.
    
    $output .= '<li' . drupal_attributes($attributes) . '>' . l($term['name'], $term['path'], $options = array('alias' => TRUE));
    if (!empty($term['children'])) {
      $output .= theme('taxonomy_menu_block__' . $config['delta'], (array('items' => $term['children'], 'config' => $config)));
    }
    $output .= '</li>';
  }
  $output .= '</ul>';

  return $output;

}?>

Нужно в общем получить такую структуру кода html

<div class="nav">
<ul class="topmenu">
<li><a href="">Meny1</a>
<ul class="submenu">
<li><a href="">Meny 1-2</a>
<ul class="submenu">
<li><a href="">Meny 1-2-1</a></li>
<li><a href="">Meny 1-2-2</a></li>
</ul>
</li>
<li><a href="">Meny 1-3</a>
<ul class="submenu">
<li><a href="">Meny 1-3-1</a></li>
<li><a href="">Meny 1-3-2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="">Meny 2</a>
<ul class="submenu">
<li><a href="">Meny 2-1</a>
<ul class="submenu">
<li><a href="">Meny 2-1-1</a></li>
<li><a href="">Meny 2-1-2</a></li>
</ul>
</li>
<li><a href="">Meny 2-2</a>
<ul class="submenu">
<li><a href="">Meny 2-2-1</a></li>
<li><a href="">Meny 2-2-2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>

Как видим, тут самый первый тег ul имеет свой класс topmenu, а другие ul submenu. Что поменять в функции php?

Лучший ответ

Аватар пользователя Rest Rest 18 июня 2019 в 15:15

Вопрос решил с помощью селекторов jquery.

Комментарии

Аватар пользователя Rest Rest 18 июня 2019 в 10:53

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:
Только один вопрос = зачем?
селектор css = :first-child
селектор jQuery = :first

Нужен класс свой для первого тега ul, чтобы меню работало. Я прописываю класс к тегу в функции, но он применяется ко всем ul.