平时用thinkcmf网站开发经常需要导航点击之后高亮,就写了一些实现方法分享一下。

思路很简单,先获取当前页面的顶级栏目的地址,然后与导航中的地址比较,相同的就加上一个class,把下面函数理解了不管一级、二级、三级都能做。

1、添加函数

/*获取当前栏目的顶级栏目地址适用2级栏目*/
function _get_top_url($c,$id){
$arr['href']['action']="Portal/".$c."/index";
$arr['href']['param']['id']=$id;
$nav=M('nav');
$rs=$nav->select();
foreach($rs as $k=>$v){
$rs[$k]['href']=unserialize(stripslashes($v['href']));
} foreach($rs as $k=>$v){
if($v['href']==$arr['href']){
$a=$v;
}
}
if($a['parentid']==0){
$href=$a['href'];
}else{
$id=$a['parentid'];
$result=$nav->find($id);
$href=unserialize(stripslashes($result['href']));
} if($href){
$href=leuu($href['action'],array('id'=>$href['param']['id']));
$default_app=strtolower(C("DEFAULT_MODULE"));
$g=C("VAR_MODULE");
$href=preg_replace("/\/$default_app\//", "/",$href);
$href=preg_replace("/$g=$default_app&/", "",$href);
}else{
$href="/";
}
/*去除g=Portal*/
//判断URL模式
if( preg_match ( '/php\?g=/' , $href ) ){
$href = preg_replace ( '/g=Portal\&/' , '' , $href );
}else{
$href = preg_replace ( '/Portal\//' , '' , $href );
}
/*转化为小写*/
$href = strtolower($href);
return $href;
}

2、模板调用

<php>
/*获取主导航*/
$menu=sp_get_menu_tree(1);
/*获取当前页面的顶级栏目的地址*/
if(CONTROLLER_NAME=="Article"){
$url=get_top_url("List",$term_id);
}else{
$url=get_top_url(CONTROLLER_NAME,$_GET['id']);
}
  //上传到服务器时,可删除下面行,为了本地测试所用 http://localhost/gupiao/
  //$url = '/gupiao' . $url;
</php>
<volist name="menu" id="vo" key="k">
  /*判断当前页面的顶级栏目的地址$url与导航中的链接$vo["href"]是否一样*/
      <li  class="n1 <eq name='url' value='$vo["href"]'>selected_u</eq>">
           <a href="{$vo['href']}" target="{$vo['target']}">{$vo['label']}</a>
         <notempty name="vo['child']">
           <ul class="navMoreUL">
              <volist name="vo['child']" id="v">
                   <li><a href="{$v['href']}" target="{$v['target']}">{$v['label']}</a></li>
               </volist>
           </ul>
       </notempty>
       </li>
</volist>
 

thinkcmf 导航高亮制作方法(适用于多级导航)(通用)的更多相关文章

  1. thinkphp导航高亮的方法

    因为引入了公共的 header.html,所以需要使用 js来实现向 li 加入active的高亮属性,这里我通过url地址和href的地址进行判断 // 这里对当前页面导航高亮 $(function ...

  2. thinkphp实现导航高亮的简单方法

    经常会涉及到关于导航菜单高亮显示的问题,大多是通过配合js或者事先分配变量的方式来实现导航高亮的,这里提供另一种思路参考: <ul class="usermenu"> ...

  3. JS原生代码实现导航高亮

    一 实现原理 根据当前页面滚动条的高度判断当前页面应当与导航栏中哪个导航相关联,并对相应的导航设置高亮样式. 二 代码解析 先简单写一个页面顶端的导航栏:<nav>  <ul> ...

  4. vue使用原生js实现滚动页面跟踪导航高亮

    需要使用vue做一个专题页面. 滚动页面指定区域导航高亮. BetterScroll:可能是目前最好用的移动端滚动插件 如何自定义CSS滚动条的样式? 监听滚动页面事件,对比当前页面的位置与元素的位置 ...

  5. 讲解版的导航高亮(新手福利)原生JS

    1.先写样式: 导航的排版样式: 导航对应高亮样式: .d6000f{ background:red; } .d6000f a{ color:#fff; } 我这个地方导航高亮样式为背景红色,字体颜色 ...

  6. 学习使用 CSS3 制作网站面包屑导航效果

    作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...

  7. 使用css3和伪元素制作的一个立体导航条

    使用css3和伪元素制作的一个立体导航条供大家参考,代码如下: <!doctype html> <html lang="en"> <head> ...

  8. js手机对应的多级导航分享

    js移动导航对应,您可以使用自适应时屏幕,当小画面在一定程度上的网站.使导航出现,The navigation effects such as the following figures:多级导航! ...

  9. Android (争取做到)最全的底部导航栏实现方法

    本文(争取做到)Android 最全的底部导航栏实现方法. 现在写了4个主要方法. 还有一些个人感觉不完全切题的方法也会简单介绍一下. 方法一. ViewPager + List<View> ...

随机推荐

  1. VS2010-MFC(对话框:创建对话框类和添加控件变量)

    转自:http://www.jizhuomi.com/software/153.html 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类 ...

  2. 浅谈response和request方法

    一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. 按这个理解的话一次请求生成一个request和res ...

  3. Tree and Permutation (HDU 6446) 题解

    // 昨天打了一场网络赛,表现特别不好,当然题目难度确实影响了发挥,但还是说明自己太菜了,以后还要多多刷题. 2018 CCPC 网络赛 I - Tree and Permutation 简单说明一下 ...

  4. PAT甲级——A1067 Sort with Swap(0, i)

    Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order ...

  5. 数据库备份还原——mysqlbackup与mysqldump对比测试

    1      环境描述 1.1      硬件环境 服务器类型:华为RH5885 IP: 10.148.128.100 内存: 64G 物理CPU个数:4 CPU核数:8 逻辑CPU个数:64 Int ...

  6. uploadify附件上传 传参

    首先 在刚加载jsp时就加入上传方法,所以 formDate 中的参数 zFileName是页面刚加载时 exp1的值 ,后来通过js方法赋值不被读过来,如果 你想要获得这个值,可在 调用upload ...

  7. js格式化数字为金额

    /** * * @param num * @param precision * @param separator * @returns {*} *=========================== ...

  8. STL与泛型编程-学习2-GeekBand

    9, 容器 Deque 双向队列 和vector类似, 新增加: push_front 在头部插入一个元素 pop_front 在头部弹出一个元素 Deque和vector内存管理不同: 大块分配内存 ...

  9. MySQL模拟Oracle序列使用

    https://www.runoob.com/mysql/mysql-using-sequences.html   一篇笔记开始看 注意:创建序列表时一定要有 主键id自增,否则为只读状态不能修改递增 ...

  10. Leetcode515. Find Largest Value in Each Tree Row在每个树行中找最大值

    您需要在二叉树的每一行中找到最大的值. 示例: 输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9] class Solution { public: vector<i ...