Codeigniter урок 21. как сделать подсветку пункта рейтинг фильмов?

0

Добрый вечер! Сделал страницу с рейтингом, но никак не могу решить проблему с тем, что когда я перехожу на вкладку "Рейтинг фильмов" у меня выделяются "рейтинг фильмов" и "фильмы" одновременно. Кто как решал данную проблему?

роуты:

$route['default_controller'] = 'main';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;


$route['movies/(:any)'] = 'movies/view/$1';
$route['movies/type/films'] = 'movies/type/films/$1';
$route['movies/type/serials'] = 'movies/type/serials/$1';
$route['movies/rating/films'] = 'movies/rating/films/$1';

$route['news'] = 'news';
$route['news/create'] = 'news/create';
$route['news/edit'] = 'news/edit';
$route['news/delete'] = 'news/delete';
$route['news/(:any)'] = 'news/veiw/$1';

$route['posts'] = 'posts';
$route['posts/create'] = 'posts/create';
$route['posts/edit'] = 'posts/edit';
$route['posts/delete'] = 'posts/delete';
$route['posts/(:any)'] = 'posts/veiw/$1';

Хелпер(в комментарии условие для рейтинга):

<?php 

	if(!function_exists("show_active_menu")) {

		function show_active_menu($slug){

			$ci = & get_instance();

			$result = "";


			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) === 'rating'){
				$result = "class='active'";
			}*/

			

			if($slug === 'films' && $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); ?> > <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="/movies/rating/films">Рейтинг фильмов</a></li>
                <li <?php echo show_active_menu('contact'); ?> ><a href="contact.html">Контакты</a></li>
codeigniter

1 ответов

1

Проблема решена. Как и говорилось в уроке, нужно сделать всё элегантнее:)

	if(!function_exists("show_active_menu")) {

		function show_active_menu($slug){

			$ci = & get_instance();

			$result = "";


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

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


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

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

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

			return $result;


		}
Sign up or Log in to write an answer