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>


  /*判断当前页面的顶级栏目的地址$url与导航中的链接$vo["href"]是否一样*/
      selected_u">
           {$vo['label']}
         
           
              
                   
  • {$v['label']}
  •                                            
     

    转载于:https://www.cnblogs.com/MY0101/p/7218879.html

    你可能感兴趣的:(thinkcmf 导航高亮制作方法(适用于多级导航)(通用))