建站时,很多生产制造企业客户的网站导航栏目有三个层级的栏目,这是很常见的。
那么用织梦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
打开微信添加好友?
确定