首页 > 解决方案 > 选择子菜单时的活动导航项(无 js)

问题描述

我正在寻找一种在选择子菜单项时突出显示导航项的方法。它必须在 PHP 中完成。菜单所在的位置是作为包含在每个页面上的动态加载的。另外,我不是程序员,所以请像初学者一样解释。

我在 include.php 文件中有以下菜单:

    <?php
  function setActive($name){
    global $pageName;
    if ($pageName == $name){
      echo "class='active' ";
    }
  }
?>



<ul id="menu">
    
  <li ><a <?php setActive ('A')?> href="a.php">A</a></li>
  <li ><a <?php setActive ('B')?> href="a.php">B</a></li>
        <li>
            <a  href="#"  >C</a>
          
            <ul>
                <li><a href="D.php">D</a></li>
                <li><a href="E.php" >E</a></li>
            </ul>
        </li>
        <li>
</ul>

每个页面都有以下内容:

<?php
 $pageName ='D';

require "include.php";

?>

选择 D 或 E 时,如何将主菜单项 C 设为“活动”?

谢谢你。

标签: phphtmlnavigationsubmenu

解决方案


有更好的方法可以做到这一点,使用适当的菜单结构,但是使用你已经拥有的系统,你可以做这样的事情:

 <?php
  function setActive($name) {
    global $pageName;
    if ($pageName == $name){
      echo "class='active' ";
    }
  }

function setMultiActive($array_of_names) {
  global $pageName;
  foreach ($array_of_names as $name) {
    if ($pageName == $name) {
      echo "class='active'";
      break;
    }
  }
?>



<ul id="menu">
    
  <li ><a <?php setActive ('A')?> href="a.php">A</a></li>
  <li ><a <?php setActive ('B')?> href="a.php">B</a></li>
        <li>
            <a  href="#" <?php setMultiActive(['D', 'E']) ?>>C</a>
          
            <ul>
                <li><a href="D.php">D</a></li>
                <li><a href="E.php" >E</a></li>
            </ul>
        </li>
        <li>
</ul>

推荐阅读