【问题标题】:Highlighting current menu item if PHP include如果 PHP 包含,则突出显示当前菜单项
【发布时间】:2025-12-11 05:00:01
【问题描述】:

如果我在 html 中创建一个菜单导航并使用 PHP 将其包含在我网站上的每个页面中,如果我可以在页面上放置的所有内容都是 include("menu.html"),我该如何突出显示当前页面;

【问题讨论】:

  • menu.html可以包含PHP代码吗?
  • 绝对。可以是 menu.php :)

标签: 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 类添加到该特定标记。

      【讨论】:

        最近更新 更多