使用活动选择器 (PHP) 进行全局导航


Global navigation with active selector (PHP)

与其在每个页面中重复导航栏代码,我想为导航菜单栏编写一个PHP代码片段,并将该文件包含在相关页面中。我的第一个导航栏菜单HTML代码如下。(默认情况下,选择"用户"。

<ul>
   <li class="active" ><a href="administrator1.php"><span><B>USERS</B></span></a></li>
   <li><a href="administrator2.php"><span><B>CREATE PROFILE</B></span></a></li>
   <li><a href="administrator3.php"><span><B>PAYMENTS</B></span></a></li>
   <li><a href="administrator4.php"><span><B>DEFENSE</B></span></a></li>
   <li><a href="administrator5.php"><span><B>PROGRESS REPORT</B></span></a></li>
</ul>

所以我将上面的代码更改为PHP代码。具有此代码的文件名是"test.php"

<?php
$menu = array(
    'users'          => array('text'=>'USERS',           'url'=>'?p=administrator1.php'),
    'createProfile'  => array('text'=>'CREATE PROFILE',  'url'=>'?p=administrator2.php'),
    'payment'        => array('text'=>'PAYMENTS',        'url'=>'?p=administrator3.php'),
    'defense'        => array('text'=>'DEFENSE',         'url'=>'?p=administrator4.php'),
    'progressReport' => array('text'=>'PROGRESS REPORT', 'url'=>'p=administrator5.php'),);
class Nav {
    public static function GenerateMenu($items) {
        $html = "<ul>";
        foreach($items as $item) {
            $html .= "<li><a href='{$item['url']}' ><span><B>{$item['text']}</B></span> </a></li>";
        }
        $html .= "</ul>";
        return $html;
    }
};
?>

在"管理员1.php"中,我调用了上述函数,如下所示;

<?php 
    include 'test.php';
    echo Nav::GenerateMenu($menu);
?>

我的问题是,如何将"administrator1.php"作为默认选定的菜单列表项以及如何将选定的列表项设置为CSS类?

选定的列表项应具有"活动"CSS 类。

<li class="active" >

检查当前脚本文件名是否是导航中显示的 url 的一部分。如果是这样,则为其分配active类。

foreach($items as $item) {
if(stristr($item['url'],__FILE__)===FALSE)
  {
    $html .= "<li><a href='{$item['url']}' ><span><B>{$item['text']}</B></span> </a></li>";
  }
  else
  {
    $html .= "<li class='active'><a href='{$item['url']}' ><span><B>{$item['text']}</B></span> </a></li>";
  }
}