zoukankan      html  css  js  c++  java
  • wpgcms---导航高亮显示

    在使用wpgcms做项目的时候,有时候三级栏目默认是没有高亮显示的一级导航的,例如:文章详情页要对应的文章栏目进行高亮显示,三级单篇页要对应栏目是高亮显示。具体做法是:

    首先看获取导航的方式:

    {% set mainNavs = wpg.navigation.get('main') %}
    {% for nav in mainNavs %}
    <li {% if nav.active %} class="active-list-nav" {% endif %}>
        <a href="{{ nav.url|default('javascript:;') }}">{{ nav.name }}</a>
    </li>
    {% endfor %}

    看到是通过 wpg.navigation.get 来获取导航列表的,找到对应的 navigation 模板,get方法:

    这里的get调用的是 getlIst方法:

    这里掉用的是 loadlist方法:

    这里是通过 $value 来获取对应的 attributes:具体方法是:

    这里判断是否是激活页面的方法具体是:当前模型 NavigationItem.php 下的  getIsActive(); 修改为如下即可:

    示例代码:

    public function getIsActive($recursive = true){
        $url = $this->getUrl();
        $urlArray = explode("/",preg_replace('/.html/','',$url));
        $urlName = isset($urlArray[1]) ? $urlArray[1] : '';
        if ($recursive){
            $reqUrl = explode('?', Yii::$app->request->url)[0];
            $reqArray = explode("/",preg_replace('/.html/','',$reqUrl));
            $reqName = isset($reqArray[1]) ? $reqArray[1] : '';
            if (!$reqUrl) $reqUrl = '/';
            // 这里导航的判断逻辑是: 获取访问的地址 和 当前的导航的地址做对比,两者相同就是:true
            $isActive = $url === $reqUrl;
            if(!$isActive){
                $isActive = $urlName === $reqName;
            };
            if (!$isActive){
                $subs = self::find()->where(['parent_id' => $this->id])->all();
                if (count($subs)){
                    foreach ($subs as $key => $value){
                        if ($value->getIsActive($recursive)){
                            return true;
                        }
                    }
                }
                return $isActive;
            }else{
                return true;
            }
        }else{
            $reqUrl = explode('?', Yii::$app->request->url)[0];
            if (!$reqUrl) $reqUrl = '/';
            return $url === $reqUrl;
        }
    }
  • 相关阅读:
    状压DP【p1879】[USACO06NOV]玉米田Corn Fields
    Tarjan缩点+Spfa最长路【p3627】[APIO2009] 抢掠计划
    Tarjan缩点【p1726】上白泽慧音
    分层图【p4822】[BJWC2012]冻结
    Tarjan缩点+LCA【p2783】有机化学之神偶尔会做作弊
    线段树【p1607】[USACO09FEB]庙会班车Fair Shuttle
    better-scroll踩坑合集
    在浏览器上安装 Vue Devtools工具
    无法执行vue初始化命令
    vue-cli创建第一个项目(用git bash解决上下键移动选择问题)
  • 原文地址:https://www.cnblogs.com/e0yu/p/10552783.html
Copyright © 2011-2022 走看看