1. 程式人生 > >thinkcmf 導航高亮制作方法(適用於多級導航)(通用)

thinkcmf 導航高亮制作方法(適用於多級導航)(通用)

思路 ont lower reac 當前 parent serial com art

平時用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="/"; } 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>
 

摘自:http://www.zhlblog.com/article/29.html

thinkcmf 導航高亮制作方法(適用於多級導航)(通用)