zoukankan      html  css  js  c++  java
  • thinkcmf 导航高亮制作方法(适用于多级导航)(通用)

    平时用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>
     
  • 相关阅读:
    The Python Standard Library
    Python 中的round函数
    Python文件类型
    Python中import的用法
    Python Symbols 各种符号
    python 一行写多个语句
    免费SSL证书(https网站)申请,便宜SSL https证书申请
    元宇宙游戏Axie龙头axs分析
    OLE DB provider "SQLNCLI10" for linked server "x.x.x.x" returned message "No transaction is active.".
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "xxx.xxx.xxx.xxx" was unable to begin a distributed transaction.
  • 原文地址:https://www.cnblogs.com/MY0101/p/7218879.html
Copyright © 2011-2022 走看看