В настоящее время у меня есть 7 страниц, в которых все они содержат один и тот же навигатор. Я хочу изменить каждый цвет ссылок, когда я нахожусь на соответствующей странице. Поэтому, если я нахожусь на домашней странице, я хочу, чтобы ссылка «Главная» была другого цвета. Единственное, что я использую PHP, чтобы включить мой nav. Может ли кто-нибудь сказать мне, как я могу это сделать? Вот код для каждой страницы. Ничего не меняется, кроме того, что находится между тегами контента.
<?php ob_start(); require 'core/database/connect.php'; ?> <!doctype html> <html> <?php include 'includes/head.php'; ?> <body> <?php include 'includes/header.php'; include 'includes/headline.php'; include 'includes/nav.php'; ?> <div class="content"> <?php $pageTitle = 'Title | Home'; ?> <div class="container-title"> <p>Home</p> </div> </div> <?php include 'includes/footer.php'; ?> </body> </html> <?php $pageContents = ob_get_contents(); ob_end_clean(); echo_str_replace('<!--TITLE-->', $pageTitle, $pageContents); ?>
код nav.php:
<div class="nav"> <div class="nav-inner"> <ul> <li> <a href="index.php">Home</a> </li> <li> <a href="page2.php">Page 2</a> </li> <li> <a href="page3.php">Page 3</a> </li> <li> <a href="page4.php">Page 4</a> </li> <li> <a href="page5.php">Page 5</a> </li> <li> <a href="page6.php">Page 6</a> </li> </ul> </div> </div>
Хорошо, так что подход может быть, добавить идентификатор на каждую страницу, проверить и показать выбранный класс. Идентификатор здесь is_home
<?php ob_start(); require 'core/database/connect.php'; $identifier='is_home';//This is for home, assign page_2 for Page 2 or whatevery you like and check on bnav page ?> <!doctype html> <html> <?php include 'includes/head.php'; ?> <body> <?php include 'includes/header.php'; include 'includes/headline.php'; include 'includes/nav.php'; ?> <div class="content"> <?php $pageTitle = 'Title | Home'; ?> <div class="container-title"> <p>Home</p> </div> </div> <?php include 'includes/footer.php'; ?> </body> </html> <?php $pageContents = ob_get_contents(); ob_end_clean(); echo str_replace('<!--TITLE-->', $pageTitle, $pageContents); ?>
И ваш nav.php выглядит так
<div class="nav"> <div class="nav-inner"> <ul> <li class=" <?php if($identifier=='is_home')echo 'active'; ?>"> <a href="index.php">Home</a> </li> <li class=" <?php if($identifier=='page_2')echo 'active'; ?>"> <a href="page2.php">Page 2</a> </li> <li class=" <?php if($identifier=='page_3')echo 'active'; ?>"> <a href="page3.php">Page 3</a> </li> <li class=" <?php if($identifier=='page_4')echo 'active'; ?>"> <a href="page4.php">Page 4</a> </li> <li class=" <?php if($identifier=='page_5')echo 'active'; ?>"> <a href="page5.php">Page 5</a> </li> <li class=" <?php if($identifier=='page_6')echo 'active'; ?>"> <a href="page6.php">Page 6</a> </li> </ul> </div> </div>
Это может быть не идеальное решение. но работает очень хорошо
На каждой веб-странице скажите, что page1.php
включает в себя это
include 'includes/nav.php?page=page1.php';
И в вашем nav.php
Сделайте так
nav.php::::: $active = $_GET['page']; $pageArray = new Array("page1.php", "page2.php", ....); $makeActive = ""; for($page in $pageArray){ if($active == $page) $makeActive = "style='color:#F1F1F1'"; echo "<li> <a ".$makeActive." href='$page'>". $page ."</a> </li>" }
Вы можете использовать что-то вроде этого
<?php function currentPage($pageName){ if (($pageName.".php") == basename($_SERVER['PHP_SELF'])){ echo ' class="active"'; } } ?>
Эта функция получает имя страницы (например, «page2», «page3» …) и проверяет, соответствует ли имя текущей страницы в URL-адресе этому имени, если это так, echos class="active
. Вы должны определить класс в своем css , это может быть примерно так:
a.active { color: #F00; }
и ваш nav.php должен измениться на:
<div class="nav"> <div class="nav-inner"> <ul> <li> <a href="index.php"<?php currentPage("index"); ?>>Home</a> </li> <li> <a href="page2.php"<?php currentPage("page2"); ?>>Page 2</a> </li> <li> <a href="page3.php"<?php currentPage("page3"); ?>>Page 3</a> </li> <li> <a href="page4.php"<?php currentPage("page4"); ?>>Page 4</a> </li> <li> <a href="page5.php"<?php currentPage("page5"); ?>>Page 5</a> </li> <li> <a href="page6.php"<?php currentPage("page6"); ?>>Page 6</a> </li> </ul> </div> </div>
Это первый и, возможно, самый уродливый способ сделать это, но он работает. Вы можете уточнить этот код, использовать его как подсказку.
Подробнее о basename: http://php.net/manual/en/function.basename.php Подробнее о $ _SERVER: http://php.net/manual/en/reserved.variables.server.php