PHP - 如何更改链接的类

时间:2013-09-19 11:07:13

标签: php html css web

我正在尝试为我正在构建的网站学习PHP。在CSS中,我有一个类nav a.thispage,设置使导航上的“按钮”与突出显示的颜色相同。它工作得很漂亮。但是,当我添加页面时,我发现我需要不断更新网站的所有HTML文件,一遍又一遍。我发现PHP可以帮助我实现自动化。我在我的HTML中使用以下PHP来执行此操作:

 <?php include 'content/header.php';?>

header.php文件包含以下内容:

<header>
  <h1><img id="headerimage" src="Images/GrandLodge.png"/>Lodge</h1>
  <nav>
    <ul>
      <li><a href="index.php">Home</a></li>
      <li><a href="events.php">Events</a></li>
      <li><a href="social.php">Social</a></li>
      <li><a href="about.php">About</a></li>
      <li><a href="contact.php">Contact</a></li>
      <li><a href="gamestores.php">Area Game Stores</a></li>
      <li><a href="http://someaddress" target="_blank">PFS</a></li>
    </ul>
  </nav>
</header>

现在,因为我使用的是这种方法,所以我不能只在标签上设置class="thispage"。有没有办法用PHP动态设置类?如果是这样,如何判断加载html的页面实际上是否是需要它的页面?使用PHP甚至是正确的方法来处理这个问题,还是应该使用JavaScript?

我知道这很多,而且我并没有真正提供我所做的很多事情,但我实际上似乎无法看到我需要为此做些什么。我真正需要的是一个正确方向的点,而不是一个完整的代码示例。

感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:3)

使用basename($_SERVER['REQUEST_URI'])

    <header>
      <h1><img id="headerimage" src="Images/GrandLodge.png"/>Lodge</h1>
      <nav>
        <ul>
        <?php $basename = basename($_SERVER['REQUEST_URI']);?>
$class = $basename === 'index.php' || empty($basename) ? ' class="thispage"' : '';
          <li <?php if($basename=="index.php" || $basename==""){?> class="thispage" <?php } ?>><a href="index.php">Home</a></li>
          <li <?php if($basename=="events.php"){?> class="thispage" <?php } ?>><a href="events.php">Events</a></li>
          <li <?php if($basename=="social.php"){?> class="thispage" <?php } ?>><a href="social.php">Social</a></li>
          <li <?php if($basename=="about.php"){?> class="thispage" <?php } ?>><a href="about.php">About</a></li>
          <li <?php if($basename=="contact.php"){?> class="thispage" <?php } ?>><a href="contact.php">Contact</a></li>
          <li <?php if($basename=="gamestores.php"){?> class="thispage" <?php } ?>><a href="gamestores.php">Area Game Stores</a></li>
          <li><a href="http://someaddress" target="_blank">PFS</a></li>
        </ul>
      </nav>
    </header>

更新了另一种简单方法

<header>
      <h1><img id="headerimage" src="Images/GrandLodge.png"/>Lodge</h1>
      <nav>
        <ul>
        <?php $basename = basename($_SERVER['REQUEST_URI']);?>
         $class = $basename === 'index.php' || empty($basename) ? ' class="thispage"' : '';
          <li <?= $class ?>><a href="index.php">Home</a></li>
          <li <?= $class ?>><a href="events.php">Events</a></li>
          <li <?= $class ?>><a href="social.php">Social</a></li>
          <li <?= $class ?>><a href="about.php">About</a></li>
          <li <?= $class ?>><a href="contact.php">Contact</a></li>
          <li <<?= $class ?>><a href="gamestores.php">Area Game Stores</a></li>
          <li><a href="http://someaddress" target="_blank">PFS</a></li>
        </ul>
      </nav>
    </header

答案 1 :(得分:1)

你可以使用PHP和JavaScript来处理这个

<header>
   <h1><img id="headerimage" src="Images/GrandLodge.png"/>Lodge</h1>
   <nav>
     <ul>
       <li><a id="aHome" href="index.php">Home</a></li>
       <li><a id="aEvents" href="events.php">Events</a></li>
       <li><a id="aSocial" href="social.php">Social</a></li>
       <li><a id="aAbout" href="about.php">About</a></li>
       <li><a id="aContact" href="contact.php">Contact</a></li>
       <li><a id="aGame" href="gamestores.php">Area Game Stores</a></li>
       <li><a id="aPFS" href="http://someaddress" target="_blank">PFS</a></li>
     </ul>
   </nav>
 </header>

现在假设访问者已登陆“关于”页面。检查并在a标签上设置类名的代码是

 <?php
    if ($_SERVER['SCRIPT_NAME'] == '/about.php') { 
 ?>
 <script type="text/javascript">
   document.getElementById("aAbout").className = 'thispage';
 </script>
 <?php
   }
 ?>

试试并告诉我。

答案 2 :(得分:0)

为了让PHP帮助您,您必须在循环中生成导航。有点像:

<?php 
    $menu = array(
        'Home'   => 'index.php',
        'Events' => 'events.php',
        'Social' => 'social.php',
        'About'  => 'about.php'
    );
?>

<?php foreach ($menu as $name => $href) : ?>
    <?php $class_name = basename(__FILE__) === $href ? 'thispage' : ''; ?>
    <li><a href="<?php echo $href; ?>" class="<?php echo $class_name; ?>"><?php echo $name; ?></a></li>
<?php endforeach; ?>