建站时,很多生产制造企业客户的网站导航栏目有三个层级的栏目,这是很常见的。
那么用织梦dedecms建设网站时,怎么在网站导航栏实现调用顶级/一级、二级、三级栏目分类?
完整调用标签代码如下:
<ul class="menu"> <li {dede:field name=typeid runphp="yes"}(@me=="")? @me=" class='current'":@me="";{/dede:field}><a href="/">首页</a></li> {dede:channelartlist typeid='top' row='8' currentstyle="current"} <li class="{dede:field.currentstyle/}"> <a href="{dede:field name='typeurl'/}" class="">{dede:field name='typename' /}</a> <div class="zmenu" style="visibility: hidden; height: auto; overflow: hidden; opacity: 0;"> <dl> <dd class="zmenu-l"><img src="{dede:field name='minimage' /}" width="350" /></dd> <dd class="zmenu-r"> {dede:sql sql='select * from dede_arctype where reid =~id~ '} <span> <h1><a target="_blank" href="[field:typedir function='str_replace("{cmspath}","",@me)'/]">[field:typename/]</a></h1> <ul class="cp_nav"> [field:id runphp='yes'] global $dsql; $id=@me; $sql='Select * from dede_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 .='<li><a href="'.$url.'" target="_blank">'.$row['typename'].'</a></li><li>|</li>'; @me = $str; } if(@me == $id){ //避免3级栏目为空时 写出分类ID,这里加以判断 @me =''; } [/field:id] </ul> </span> {/dede:sql} </dd> </dl> </div> </li> {/dede:channelartlist} </ul>
上述部分代码说明:
1、{dede:field name=typeid runphp="yes"}(@me=="")? @me=" class='current'":@me="";{/dede:field}是判断是否为网站首页,如果是首页,就显示class='current'样式;
2、currentstyle="current"和{dede:field.currentstyle/}配套,是判断如果是当前栏目,这该栏目显示current样式,可以对该样式设置高亮效果。
如果有四级、五级等更多子栏目的话,就需要进行二次开发后,再进行调用了,本文所分享的调用代码无法调用出四级、五级等更多层级的子栏目了。
注意:上述高亮代码在实际应用中,会发现当前栏目并没有显示current样式,也就是没有高亮效果,这是因为织梦dedecms系统默认的channelartlist标签不支持currentstyle高亮效果,需要进行如下开发:
打开/include/taglib/channelartlist.lib.php文件,
找到
$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
在其下方新增以下代码:
if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['reid'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] || $typeids[$i]['id'] == GetTopid($refObj->TypeLink->TypeInfos['id']) ){ $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current'; } else { $pv->Fields['currentstyle'] = ''; }
到此,去后台更新网站后,再刷新前端网页,就可以正常显示当前栏目的高亮效果了。
您已成功复制微信号
leishi010
打开微信添加好友?
确定