織夢DEDE三級欄目導航實現 親測有效
阿新 • • 發佈:2018-12-12
專案需要做三級專案實現,網上查了下資料並不算多,而且有的都是頂級為指定ID的那種,指定ID實際算是2級並不是3級,所以在此把程式碼貼上,以備他人所需。
1、環境:織夢
<div id="navMenu"> <ul> <li ><a href="/">網站首頁</a></li> {dede:channelartlist typeid='top' row='10' currentstyle="home"} //currentstyle 可以實現欄目切換時改變class狀態,但需要修一些檔案,具體看下面一段程式碼 <li class='{dede:field.currentstyle/}'><a href="{dede:field name='typeurl'/}" rel='dropmenu'>{dede:field name='typename' /}</a> <div id="erji" class="erji hide" style="position: absolute;width: 200px"> {dede:sql sql='select * from ywcm_arctype where reid =~id~ '} <dl style="position: relative;height: 30px"> <a href='[field:typelink/]' target='_self' title="[field:typename/]" style="width: 90%;padding-left:10%;text-align:left;line-height: 30px">[field:typename/]</a> <div id="sanji" class="hide" style="position: absolute;width: 200px;left: 200px;background: #0D6598;"> [field:id runphp='yes'] global $dsql;
[email protected]; $sql='Select * from ywcm_arctype where reid='.$id.' ORDER BY id limit 0,20'; $dsql->SetQuery($sql); $dsql->Execute(); while($row = $dsql->GetArray()){ $url = str_replace("{cmspath}","",$row['typedir']); $str .='<a href="'.$url.'" style="display: block;width: 90%;padding-left: 10%;text-align: left;line-height: 30px;">'.$row['typename'].'</a>'; @me = $str; } if(@me == $id){ //避免3級欄目為空時 寫出分類ID,這裡加以判斷 @me =''; } [/field:id] </div> </dl> {/dede:sql} </div> </li> {/dede:channelartlist} </ul>
2、實現導航切換變色 所需要修改的檔案
找到 織夢 更目錄下 include/taglib/channelartlist.lib.php 檔案
約94行 找到 $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]); 程式碼,在此程式碼下插入
if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] ){ $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current'; }else{ $pv->Fields['currentstyle'] = ''; }
儲存後生效。