项目需要做三级项目实现,网上查了下资料并不算多,而且有的都是顶级为指定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;
$id=@me;
$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'] = '';
}
保存后生效。
版权声明:本文为weixin_41000837原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。