Почему одновременно подсвечены два пункта меню?
Этот же вопрос обсуждался, но ответа на него пользователь так и не получил 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>
Логически, данное поведение подсветки может означать, что главная страница и рейтинг имеют одинаковый сегмент или же логика работы подсветкы такая (при выборе сегмента Рейтинг подключается также сегмент Главной - НО ЭТО ТЕОРЕТИЧЕСКИЕ ПРЕДПОЛОЖЕНИЯ, визуально я не могу найти им подтверждение). Либо же я что-то не понял!
Подскажите, пожалуйста, как исправить эту ошибку!
СПАСИБО
2 ответов
Я брал код из исходного кода, подсветка меню работает, в том числе рейтинг. В исходном коде пробовал смотреть?
В хелпере:
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>
Спасибо, student_B1eOljF6. Сейчас посмотрю.