Как добавить класс active пункту меню верхнего уровня? 2.X

 
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1930
Привет. С праздником!

Есть меню, верхний уровень без ссылки. При клике на пункт 1 уровня открывается подменю. Если перейти по ссылке из подменю, то самому пункту меню, который ведет на открытую страницу, присваивается класс active. Как сделать, чтобы в этом случае класс active присваивался также и пункту 1 уровня?

Например, есть пункт меню "Двери" (это верхний уровень) - без ссылки, при клике по нему открывается подменю, в котором "Входные двери" и "Межкомнатные двери". Если перейти в раздел "Входные двери", то пункт меню "Входные двери" получает класс active. Нужно этот класс присвоить также и пункту меню "Двери", который и есть пункт верхнего уровня.

Вот так выглядит код, который присваивает класс active активным пунктам и класс folder, если есть нижние уровни:

Код PHP:
  1. <?php
  2. $is_active = in_array($id, $active_ids);
  3. $css_classes = array();
  4. if ($is_active) { $css_classes[] = 'active'; }
  5. if ($item['childs_count'] > 0) { $css_classes[] = 'folder'; }
  6. ?>
А вот здесь эти классы присваиваются пунктам меню:

Код PHP:
  1. <li <?php if ($css_classes) { ?>class="<?php echo implode(' ', $css_classes); ?>"<?php } ?>>
Какое условие написать еще?

Вот такая строчка добавляет класс active верхнему пункту, но навсегда))) Т.е., даже на главной странице этот пункт с классом active:

Код PHP:
  1. if ($item['childs_count'] > 0 && $item['childs_item'] == $is_active) { $css_classes[] = 'active'; }
или
Код PHP:
  1. if ($item['childs_count'] > 0 && $item['childs'] == $is_active) { $css_classes[] = 'active'; }
Методом тыка перепробовал 100500 вариантов))) Нифига не то. Поможыте люди добрыя!))

Спасибо.
Редактировалось: 3 раз (Последний: 9 мая 2019 в 21:16)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1930
Нашел один вариантик здесь, но может есть способ сделать это на php?
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2571
чебурек дохлэй мыш в двойке можно все. Нужно добавить вот такой код в файл шаблона меню

Код PHP:
  1.  
  2. //дополним активные ids
  3. foreach ($active_ids as $iditem) {
  4. $active_ids[] = $menu[$iditem]['parent_id'];
  5. }
  6. //дополним активные ids
  7.  
как на картинке

Как добавить класс active пункту меню верхнего уровня?

и получим

Как добавить класс active пункту меню верхнего уровня?
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1930
Zau4man, спасибо, добрый человек!)) Работает!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: