我正在制作一个网站,我所有的网页都包含了header.php,它只是页面顶部的徽标和导航栏,下面是导航菜单的代码。
<nav id="navmenu">
<ul>
<li><a href="index.php" class="active">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
我怎样才能使class =“active”根据用户所在的页面而改变?
答案 0 :(得分:1)
您可以使用:$_SERVER['PHP_SELF']
它会告诉您当前所在页面的名称。
然后,在你的头文件中,juste使用这样的东西:
<a href="contact.php" <?php if($_SERVER['PHP_SELF'] == "/contact.php") echo 'class="active"'; ?>>Contact</a>
答案 1 :(得分:1)
使用$ _SERVER ['PHP_SELF']
<li><a href="index.php" <?php if ($_SERVER['PHP_SELF'] == "/index.php") echo "class='active'" ?>>Home</a></li>
<li><a href="about.php" <?php if ($_SERVER['PHP_SELF'] == "/about.php") echo "class='active'" ?>>About</a></li>
答案 2 :(得分:1)
您可以使用服务器变量PHP_SELF ie。 $_SERVER['PHP_SELF']
,其中包含您的网站名称附加的文件名,即。/index.php
,即。 www.example.com
<nav id="navmenu">
<ul>
<li><a href="index.php" <?php if ($_SERVER['PHP_SELF'] == "/index.php") echo "class='active'" ?>>Home</a></li>
<li><a href="about.php" <?php if ($_SERVER['PHP_SELF'] == "/about.php") echo "class='active'" ?>>About</a></li>
<li><a href="portfolio.php" <?php if ($_SERVER['PHP_SELF'] == "/portfolio.php") echo "class='active'" ?>>Portfolio</a></li>
<li><a href="contact.php" <?php if ($_SERVER['PHP_SELF'] == "/contact.php") echo "class='active'" ?>>Contact</a></li>
</ul>
</nav>
希望它有所帮助:)
答案 3 :(得分:0)
这样做的方式可能不止一种。最直接的可能是将头文件更改为:
<?php
if (!defined('HOME_LINK_CLASS')) {
define('HOME_LINK_CLASS', 'active');
}
?><nav id="navmenu">
<ul>
<li><a href="index.php" class="<?php echo HOME_LINK_CLASS;?>">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
现在,如果您希望该类在特定页面上(例如)“处于非活动状态”,则可以在该页面上的include
命令之前添加此行:
define('HOME_LINK_CLASS', 'inactive');
答案 4 :(得分:0)
http://webcheatsheet.com/PHP/get_current_page_url.php
使用类似的内容检查当前页面网址。然后使用if语句来要求某些文件
答案 5 :(得分:0)
您可以使用PHP_SELF
获取文件名,如下所示:
<?php
$page = $_SERVER["PHP_SELF"];
switch($page){
case "/index.php": $class = "index";break;
case "/home.php": $class = "home";break;
case "/info.php": $class = "info";break;
default: $class = "active";break;
}
?>
<nav id="navmenu">
<ul>
<li><a href="index.php" class="<?php echo $class; ?>">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>
答案 6 :(得分:0)
您可以使用$_SERVER['PHP_SELF']
检索当前脚本名称,然后使用三元语句将active
属性添加到该链接。
<?php $p = strtolower(basename($_SERVER['PHP_SELF'])); ?>
<nav id="navmenu">
<ul>
<li><a href="<?php echo ($p=="home.php" ? "active" : "")?>">Home</a></li>
<li><a href="<?php echo ($p=="about.php" ? "active" : "")?>">About</a></li>
<li><a href="<?php echo ($p=="portfolio.php" ? "active" : "")?>">Portfolio</a></li>
<li><a href="<?php echo ($p=="contact.php" ? "active" : "")?>">Contact</a></li>
</ul>
</nav>
答案 7 :(得分:0)
如果您的网页(document.location
)与菜单上的href
一样,那么您不需要活动项的类,只需使用伪CSS类:active
否则,您需要检查$_SERVER
超级全局PHP_SELF
并将该类添加到所需的菜单项。像下面的代码:
//code snipped not tested
<li><a href="index.php" class="<?php echo preg_match("/index.php$/", $_SERVER["PHP_SELF"]) ? ("active") : (""); ?>">Home</a></li>
答案 8 :(得分:0)
这样做的简单方法是创建一个页面数组,然后遍历该数组以创建菜单项,并检查每个循环是否为活动文件。通过使用此方法也很容易添加或删除页面,只需更改菜单数组中的项目,在大量页面的情况下代码也更小,更容易阅读:
// get active file, $_SERVER['SCRIPT_NAME'] is less spoofable than $_SERVER['PHP_SELF']
$active = basename( $_SERVER['SCRIPT_NAME'] );
// create array of pages
$main_nav = array(
'index.php' => 'Home',
'about.php' => 'About',
'portfolio.php' => 'Portfolio',
'contact.php'=>'Contact'
);
// create menu
// notice the usage of PHP shorthand:
// ( $active == $file ? 'class="active"' : '' ) is the same as:
//
// if ( $active == $file ) 'class="active"';
// else '';
//
echo '<nav id="navmenu"><ul>'.PHP_EOL;
foreach ($main_nav as $file => $title) {
echo '<li><a href="' . $file . '" ' . ( $active == $file ? 'class="active"' : '' ) . '>' . $title . '</a></li>'.PHP_EOL;
}
echo '</ul></nav>';