我正在尝试为我正在构建的网站学习PHP。 在CSS中,我有一个类,nav a.thispage
,设置使导航上的"按钮"与突出显示的颜色相同。 它工作得很好。 但是,当我添加页面时,我发现我需要一遍又一遍地不断更新网站的所有 HTML 文件。 我发现PHP可以帮助我自动化。 我在我的HTML中使用以下PHP来执行此操作:
<?php include 'content/header.php';?>
标头.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>
现在,因为我正在使用这种方法,所以我不能只在 a 标签上设置class="thispage"
。 有没有办法使用 PHP 动态设置类? 如果是这样,我如何判断加载 html 的页面是否实际上是需要它的页面? 使用PHP是处理这个问题的正确方法,还是我应该使用JavaScript?
我知道这很多,但我并没有真正提供我所做的很多东西,但我似乎实际上看不到我需要为此做些什么。 我真正需要的只是一个指向正确方向的点,而不是一个完整的代码示例。
感谢您提供的任何帮助。
使用 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
你可以使用一点 oF 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
}
?>
试试吧,让我知道。
为了让 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; ?>