我正在尝试为我正在构建的网站学习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?
我知道这很多,而且我并没有真正提供我所做的很多事情,但我实际上似乎无法看到我需要为此做些什么。我真正需要的是一个正确方向的点,而不是一个完整的代码示例。
感谢您提供任何帮助。
答案 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; ?>