【问题标题】:PHP Menu function with active class具有活动类的 PHP 菜单功能
【发布时间】:2020-02-08 14:32:01
【问题描述】:

我用我的菜单项创建了一个数组,其中包括子菜单,但我不确定如果 url 匹配如何添加活动类。

我需要为两者添加一个活动类

<li class="treeview">

&lt;ul class="treeview-menu"&gt;下的&lt;li&gt;

我的数组在嵌套数组中包含link 键,如下所示

任何帮助将不胜感激

'menu-name' => array(
    'Top Level 1' => array(
        'icon' => 'fa-volume-control-phone',
        'Sub Item' => array(
            'link' => '/?seq='.$seq,
            'icon' => ' fa-asterisk',
        ),
        'Sub Item' => array(
            'link' => '/voip/?seq='.$seq,
            'icon' => 'fa-history',
        ),
    ),
    'Devices &amp; Numbers' => array(
        'link' => '/?seq='.$seq,
        'icon' => 'fa-phone',
    ),
    'Tools' => array(
        'icon' => 'fa-wrench',
        'Account Settings' => array(
            'link' => '/?seq='.$seq,
            'icon' => 'fa-cog',
        ),
        'Delete Account' => array(
            'link' => '/?seq='.$seq,
            'icon' => 'fa-trash',
        ),
    ),
),

if(!function_exists("show_side_menu")) {
    function show_side_menu($menu) {
        global $navigation;

        if(!empty($navigation[ $menu ])) {
            $ret = '';
            foreach($navigation[ $menu ] as $a => $b) {
                if(menu_permissions($a, get_logged_in_customer()) or $menu != 'main_menu') {
                    if(isset($b["link"])) {
                        $ret.= '<li class="treeview">';
                        $ret.= '<a href="'.$b["link"].'">';
                        $ret.= '<i class="fa '.$b["icon"].'"></i> ';
                        $ret.= '<span onClick="OpenPage(\''.$b["link"].'\');">'.$a.'</span> ';
                        $ret.= '</a>';
                        $ret.= '</li>';
                    } else {
                        $ret.= '<li>';
                        $ret.= '<a href="javascript:void(0);">';
                        $ret.= '<i class="fa '.$b["icon"].'"></i> ';
                        $ret.= '<span>'.$a.'</span> ';
                        $ret.= '<span class="pull-right-container"><i class="fa fa-angle-left pull-right"></i></span>';
                        $ret.= '</a>';
                        $ret.= '<ul class="treeview-menu">';
                        foreach($b as $c => $d) {
                            if(is_array($d)) {
                                $ret.= '<li>';
                                $ret.= '<a href="'.$d["link"].'">';
                                $ret.= '<i class="fa '.$d["icon"].'"></i> ';
                                $ret.= '<span onClick="OpenPage(\''.$d["link"].'\');">'.$c.'</span> ';
                                $ret.= '</a>';
                                $ret.= '</li>';
                            }
                            elseif($d == 'title') {
                                $ret.= '<li class="lead" style="color:#ffffff; margin-left:12px; padding-top:15px;">'.$c.'</li>';
                            }
                        }
                        $ret.= '</ul>';
                        $ret.= '</li>';
                    }
                }
            }
        } else {
            $ret = false;
        }
        return $ret;
    }
}

【问题讨论】:

标签: php


【解决方案1】:

你应该检查函数内部的 Uri, 请尝试此代码

$uri = $_SERVER['REQUEST_URI'];

在你调用的循环中,检查当前URI是否等于你的链接,然后你应该在检查后添加类,像这样,

    if ($b['link'] == $uri) {
        $class = 'your-active-class';
    } else {
       $class = '';
    }

    $ret.= '<a href="'.$b['link'].'" class="'.$class.'">'

希望你明白这一点

【讨论】:

  • 假设你在something.php?param1=3$uri 将是something.php?param1=3$b['link'] 将是something.php,即使它们应该匹配活动类,它们也是不同的。
  • @ALFA 同样,必须将活动类添加到父类
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 2023-04-11
  • 2023-03-03
  • 2021-01-27
  • 1970-01-01
  • 2013-08-13
  • 2012-01-31
相关资源
最近更新 更多