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

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 9 мая 2019 в 21:10
Привет. С праздником!

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

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

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

  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. ?>
А вот здесь эти классы присваиваются пунктам меню:

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

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

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

Спасибо.
#2 9 мая 2019 в 21:30
Нашел один вариантик здесь, но может есть способ сделать это на php?
#3 10 мая 2019 в 11:01
чебурек дохлэй мыш в двойке можно все. Нужно добавить вот такой код в файл шаблона меню

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



и получим

#4 10 мая 2019 в 11:08
Zau4man, спасибо, добрый человек!)) Работает!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.