如何根据页面更改包含文件

时间:2013-08-21 16:55:57

标签: php html php-include

我正在制作一个网站,我所有的网页都包含了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”根据用户所在的页面而改变?

9 个答案:

答案 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>';
相关问题