【问题标题】:Highlighting current menu item if PHP include如果 PHP 包含,则突出显示当前菜单项
【发布时间】:2025-12-11 05:00:01
【问题描述】:
如果我在 html 中创建一个菜单导航并使用 PHP 将其包含在我网站上的每个页面中,如果我可以在页面上放置的所有内容都是 include("menu.html"),我该如何突出显示当前页面;
【问题讨论】:
标签:
php
html
include
navigation
【解决方案1】:
将您的 menu.html 变成 menu.php 并在该文件中执行类似的操作
<ul class="menu">
<li <?php echo ($page == 'page1') ? 'class="current"' : '';?>> <a href="#">Page1</a> </li>
<li <?php echo ($page == 'page2') ? 'class="current"' : '';?>> <a href="#">Page2</a></li>
</ul>
这样在每个页面中都包含menu.php,您可以像这样简单地设置变量
<?php
$page = 'page1';
include('menu.php');
?>
请记住,这只是一个示例,因为我们不知道您当前的代码是什么样的
【解决方案2】:
您也可以用 PHP 编写菜单,因为您已经在使用 PHP 加载菜单,只需在菜单项上运行 if/else 语句即可检查链接中的“href”是否与页面的当前 URL 匹配并将菜单项设置为“活动”。
【解决方案3】:
在原始 php 中应该是这样的
<?php
$currentPage = ''; // should be accessed from $_SERVER
$cssMenu = array('home.html', 'about.html');
if(array_search($currentPage, $cssMenu)) $cssMenu[$currentPage] = 'active';
?>
<ul id="top-menu">
<li class="<?= $cssMenu['home.html'] ?>">Home</li>
<li class="<?= $cssMenu['about.html'] ?>">About</li>
</ul>
【解决方案4】:
由于您无法在页面加载之前修改类和 div,因此您必须在页面加载后使用某种 javascript/jquery/whatever 来动态突出显示链接。这应该不会太难。您可以使用一些 Javascript 来通过菜单 div(假设您使用 div)查找与当前页面匹配的 href 条目,然后将正确的 css 类添加到该特定标记。