Как реализовать переключатель страниц на 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 ещё не проходил. Что у меня не так?

php

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':''?>
Sign up or Log in to write an answer