1

我正在尝试为我正在构建的网站学习 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"在 a 标签上设置。有没有办法用 PHP 动态设置类?如果是这样,我如何判断加载 html 的页面是否实际上是需要它的页面?使用 PHP 甚至是处理此问题的正确方法,还是应该使用 JavaScript?

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

感谢您提供任何帮助。

4

3 回答 3

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
于 2013-09-19T11:14:13.640 回答
1

为了让 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; ?>
于 2013-09-19T11:25:34.267 回答
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>

现在假设访问者已经登陆了 About 页面。检查并在 a 标签上设置类名的代码是

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

试试看,让我知道。

于 2013-09-19T11:33:00.880 回答