我目前有 7 个页面都包含相同的导航。我想在各自的页面中更改每个链接的颜色。因此,如果我在主页中,我希望主页链接是不同的颜色。唯一的问题是我正在使用PHP来包含我的导航。有人可以告诉我如何做到这一点吗?这是每个页面的代码。除了内容标记之间的内容外,没有任何变化。
<?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);
?>
导航.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);
?>
你的导航.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中的当前页面名称是否适合该名称,如果是,则回显class="active
。你必须在你的css中定义一个类,它可以是这样的:
a.active {
color: #F00;
}
和您的导航.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>
这是第一个,也许是最丑陋的方法,但它有效。您可以优化此代码,将其用作提示。
更多关于基本名称: http://php.net/manual/en/function.basename.php更多关于 $_SERVER: http://php.net/manual/en/reserved.variables.server.php