Как реализовать переключатель страниц на php?
0
Решил поэксперементировать и натянуть вёрстку учебного сайта Киномонстр на bootstrap 3 на php.
каждый блок внёс в отдельный php файл, но столкнулся с проблемой переключения.
<ul class="nav nav-pills">
<?php
$blog = $_GET["blog"];
$url = $_SERVER['REQUEST_URI'] . '?blog=' . $blog;
if (!empty($blog)) {
switch ($blog) {
case "films":
echo "<li> <a href='index.php'>Главная</a> </li>";
echo "<li class='active'> <a href='" . $_SERVER['REQUEST_URI'] . "?blog=films'>Фильмы</a> </li>";
echo "<li> <a href='index.php'>Сериалы</a> </li>";
echo "<li> <a href='index.php'>Рейтинг фильмов</a> </li>";
echo "<li> <a href='index.php'>Контакты</a> </li>";
break;
case "serials":
echo "<li> <a href='index.php '>Главная</a> </li>";
echo "<li> <a href='index.php'>Фильмы</a> </li>";
echo "<li class='active'> <a href='" . $_SERVER['REQUEST_URI'] . "?blog=serials'>Сериалы</a> </li>";
echo "<li> <a href='index.php'>Рейтинг фильмов</a> </li>";
echo "<li> <a href='index.php'>Контакты</a> </li>";
break;
case "rating":
echo "<li> <a href='index.php '>Главная</a> </li>";
echo "<li> <a href='index.php'>Фильмы</a> </li>";
echo "<li> <a href='index.php'>Сериалы</a> </li>";
echo "<li class='active'> <a href='".$_SERVER['REQUEST_URI']."?blog=rating'>Рейтинг фильмов</a> </li>";
echo "<li> <a href='index.php'>Контакты</a> </li>";
break;
case "contact":
echo "<li> <a href='index.php '>Главная</a> </li>";
echo "<li> <a href='index.php'>Фильмы</a> </li>";
echo "<li> <a href='index.php'>Сериалы</a> </li>";
echo "<li> <a href='index.php'>Рейтинг фильмов</a> </li>";
echo "<li class='active'> <a href='" . $_SERVER['REQUEST_URI'] . "?blog=contact'>Контакты</a> </li>";
break;
}
} else {
echo "<li class='active'> <a href='" . $_SERVER['REQUEST_URI'] . ">Главная</a> </li>";
echo "<li> <a href='index.php'>Фильмы</a> </li>";
echo "<li> <a href='index.php'>Сериалы</a> </li>";
echo "<li> <a href='index.php'>Рейтинг фильмов</a> </li>";
echo "<li> <a href='index.php'>Контакты</a> </li>";
}
?>
</ul>
Курс по Codeigniter ещё не проходил. Что у меня не так?
2 ответов
0
Спасибо) Буду вникать
0
Слишком много дублирующего кода. Это плохо. Можно проще сделать.
Если цель просто подсвечивать активное меню классом active, необязательно все пункты меню дублировать. Можно написать типа такого:
<?php
$blog = $_GET["blog"];
?>
<div id="navbarCollapse" class="collapse navbar-collapse navbar-right">
<ul class="nav nav-pills">
<li><a href="index.php">Главная</a></li>
<li class="<?php echo ($blog === 'films')?'active':''?>"> <a href="?blog=films">Фильмы</a></li>
<li class="<?php echo ($blog === 'serials')?'active':''?>"> <a href='?blog=serials'>Сериалы</a> </li>
<li class="<?php echo ($blog === 'rating')?'active':''?>"> <a href='?blog=rating'>Рейтинг фильмов</a> </li>
<li class="<?php echo ($blog === 'contacts')?'active':''?>"> <a href='?blog=contacts'>Контакты</a> </li>
</ul>
</div>
Выражение ниже - это сокращенный if, Сергей в уроках где-то рассказывал про это:
<?php echo ($blog === 'films')?'active':''?>