Почему одновременно подсвечены два пункта меню?

0

Этот же вопрос обсуждался, но ответа на него пользователь так и не получил https://fructcode.com/ru/qa/tags/?tags=codeigniter. 

В 21 уроке хелперы сделал все, как показано и кнопки заработали. Но, когда по аналогии задал значения для рейтинга, одновременно подсвечиваются Рейтинг и Главная. 

Рейтинг у меня открывается по ссылке http://kinomonster.com/main/rating/                 (сегмент №2)

// для главной страницы
		if($ci->uri->segment(1, 0) === $slug) {
	       $result = "class='active'";
        }
// для фильмов/сериалов
        if($ci->uri->segment(3, 0) === $slug) {
	       $result = "class='active'";
        }
// для рейтинга
        if($ci->uri->segment(2, 0) === $slug) {
	       $result = "class='active'";
        }

в хедере указано

 <li <?php echo show_active_menu(0); ?> ><a href="/">Главная</a> </li>
                <li <?php echo show_active_menu('films'); ?>><a href="/movies/type/films/">Фильмы</a> </li>
                <li <?php echo show_active_menu('serials'); ?>> <a href="/movies/type/serials/">Сериалы</a> </li>
                <li <?php echo show_active_menu('rating'); ?>> <a href="/main/rating/">Рейтинг фильмов</a> </li>
                <li <?php echo show_active_menu('contact'); ?>> <a href="/">Контакты</a> </li>

Логически, данное поведение подсветки может означать, что главная страница и рейтинг имеют одинаковый сегмент или же логика работы подсветкы такая (при выборе сегмента Рейтинг подключается также сегмент Главной - НО ЭТО ТЕОРЕТИЧЕСКИЕ ПРЕДПОЛОЖЕНИЯ, визуально я не могу найти им подтверждение). Либо же я что-то не понял!

Подскажите, пожалуйста, как исправить эту ошибку!

СПАСИБО

codeigniter

2 ответов

1

Я брал код из исходного кода, подсветка меню работает, в том числе рейтинг. В исходном коде пробовал смотреть?

В хелпере:

if(!function_exists('show_active_menu')) {

		function show_active_menu($slug, $category) {

			$ci=& get_instance();

			$result = "";
		
			if($ci->uri->segment(1,0) === $slug) {
				$result = 'class="active"';
			}

			if($ci->uri->segment(3,0) === $slug && $ci->uri->segment(1,0) === 'movies' && $ci->uri->segment(2,0) === 'type') {
				$result = 'class="active"';
			}

			if($slug === 'films' && $category === '1' && $ci->uri->segment(1,0) === 'movies' && $ci->uri->segment(2,0) === 'view') {
				$result = 'class="active"';
			}

			if($slug === 'serials' && $category === '2' && $ci->uri->segment(1,0) === 'movies' && $ci->uri->segment(2,0) === 'view') {
				$result = 'class="active"';
			}

			return $result;
		}
	}

В коде для меню:

<ul class="nav nav-pills">
        <li <?php echo show_active_menu(0,0); ?>> <a href="/">Главная</a> </li>
        <li <?php echo show_active_menu('films', $category); ?>> <a href="/movies/type/films">Фильмы</a> </li>
        <li <?php echo show_active_menu('serials', $category); ?>> <a href="/movies/type/serials">Сериалы</a> </li>
        <li <?php echo show_active_menu('rating', 0); ?>> <a href="/rating">Рейтинг фильмов</a> </li>
        <li <?php echo show_active_menu('contact', 0); ?>> <a href="/contact">Контакты</a> </li>
</ul>

0

Спасибо, student_B1eOljF6. Сейчас посмотрю.

Sign up or Log in to write an answer