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;
}
}
wpgcms---导航高亮显示的更多相关文章
- dede使用方法---用js让当前导航高亮显示
当前导航高亮显示能够提升用户体验,我也知道,大家在网上搜dede让当前导航高亮显示的方法一抓一大把,但是,并不一定适合自己的需求.就像我的需求一样,导航有个二级导航,然后需要做到让当前导航高亮显示.我 ...
- thinkphp3.2 导航高亮显示
Controller $action = CONTROLLER_NAME."/".ACTION_NAME; //获取当前页面的‘控制器/操作方法’: $this->assig ...
- 织梦cms导航高亮显示栏目及首页的方法
直奔主题了,高亮显示教程适用于您具有一定的CSS基础才可以了,前提把高亮显示的样式写好,然后再开始高亮显示标签适用. <li {dede:field name=typeid runphp=&qu ...
- jquery 当前页导航高亮显示
<script type="text/javascript"> $(document).ready(function(){ var myNav = $("#n ...
- 有关楼层滚动且对应楼层Nav导航高亮显示
$(document).ready(function(e) { //定义数组,储存楼层距离顶部的高度(floorsTop) var floorsTop=[]; function floorsTopF( ...
- HDCMS导航高亮显示!解决办法
第一种方法:(传递class) <channel type='top' row='8' class='cur' > <li class='{$field.class}'> &l ...
- dede使用方法----调用导航
在这里,极力推荐学习dede的朋友们观看老李的零基础织梦仿站系列课程的视频,讲的超级棒的~~ 网址链接是:http://www.dede888.com/15daylessons.html. 好了,言归 ...
- thinkCMF----导航高亮显示
导航高亮显示,有多种方法,这里给出一个简单的表示下: <a href="__ROOT__"> <span class="text db"> ...
- ThinkCmfX模板常量
一.public文件: 1.各种js文件,包括cookie.js.ajaxFrom.js等系统自带的js文件 2.simpleboot:bootstrap.图标font文件 二.themes:前端模板 ...
- 替代jquery中的几个函数
// https://open.alipay.com/developmentAccess/developmentAccess.htm var $ = window.jQuery; (function( ...
随机推荐
- Kubernetes 编排系统
1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署.扩展和管理 ...
- PRTG参考价格
2010年的香港的网站上看到如下价格:http://kb.option-hk.com/?tag=prtg-network-monitor 什么才算一个sensor What counts as a s ...
- CSS 居中布局
来源:http://www.cnblogs.com/QianBoy/p/8539077.html 水平居中 1)使用inline-block+text-align 原理:先将子框由块级元素改变为行内块 ...
- Window下对nodejs多版本管理GNVM
Windows下对nodejs多版本的管理,实现随意切换! 官方地址: https://github.com/Kenshin/gnvm http://ksria.com/gnvm/ 01.下载GNVM ...
- 更新ruby:Error running 'requirements_osx_brew_update_system ruby-2.4.1报错解决
更新ruby时,报错: Failed to update Homebrew, follow instructions here: https://github.com/Homebrew/homebre ...
- 【转载】js关闭当前页面(窗口)的几种方式总结
1. 不带任何提示关闭窗口的js代码 复制代码代码如下: <a href="javascript:window.opener=null;window.open('','_self'); ...
- swift学习之常量和变量
常量:就是在初始化时(试试定义时不赋值会不会报错)赋予一个准确的值,能够在非常多地方直接用到,用letkeyword生命 变量:这个就不用说了,就是能够在下一秒你能够随便改变的量,用varkeywor ...
- java框架篇---struts之文件上传和下载
Struts2文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的 ...
- 树莓派设置静态IP地址
树莓派设置静态IP地址http://www.jianshu.com/p/b0e6d066d6b6 ——————————————————————————————————————————————————— ...
- headfirst python 01~02
列表 列表就像是数组 在python 创建一个列表时, 解释器会在内存中创建一个类似数组的数据结构来存储数据, 数据项自下而上(形成一个堆栈), 类似于其他编程语言中的数组. 列表中常用方法: cas ...