DEDEcms版本:5.7 sp2
后台栏目设置为3个顶级栏目,每个顶级栏目下分别有二级栏目和三级栏目
前台效果如下:
只有顶级栏目(主栏目)调用
1、调用所有顶级栏目 type='top'
{dede:channel type='top' currentstyle="<li class='thisclass'><a href='~typelink~'>~typename~</a> </li>"}
<li>
<a href='[field:typeurl/]'>[field:typename/]</a>
</li>
{/dede:channel}
2、指定顶级栏目ID,typeid=‘1’
{dede:type typeid=‘1’}<a href="[field:typelink /]">[field:typename /]</a>{/dede:type}
带有二级栏目调用
<li>
{dede:type typeid='1'}<a href='[field:typelink/]'>[field:typename/]</a>{/dede:type}
<ul style="display: none; ">
{dede:channelartlist typeid='top' typeid='1'}
<li><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></li>
{/dede:channelartlist}
</ul>
</li>
带三级栏目调用
<!-- 测试导航 -->
{dede:channelartlist typeid='top' row='3'}
<li>
<span><a href="{dede:field name='typeurl'/}">{dede:field name='typename' /}</a></span>
<ul>
{dede:sql sql='select * from dede_arctype where reid =~id~ '}
<li>
<span><a href=[field:typedir function='str_replace("{cmspath}","",@me)'/]>[field:typename/]</a></span>
<ul>
[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.'">'.$row['typename'].'</a></li>';
@me = $str;
}
<!-- 避免3级栏目为空时 写出分类ID,这里加以判断 -->
if(@me == $id){
@me ='';
}
[/field:id]
</ul>
</li>
{/dede:sql}
</ul>
</li>
{/dede:channelartlist}
<!-- /测试导航 -->
SQL也可以这样写:(注意:红色部分dede_为当前数据库前缀)
{dede:sql sql='Select * from dede_arctype where reid=~id~ ORDER BY id limit 0,20'} <li>
<a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]" class="depth_3">[field:typename/]</a>
</li>
{/dede:sql}
参数说明
typeid='1' 栏目ID;
reid = '1' 上级栏目ID;
row = '20' 调用栏目数;
col = '1' 分多少列显示(默认为单列);
type = 'son | sun' son表示下级栏目,self表示同级栏目,top顶级栏目;
currentstyle = '' 应用css样式"。