织梦(dedecms)循环调用多级子栏目如二级栏目下三级栏目

本文是关于织梦DedeCMS调用多级子栏目的,拿来分享下。 
后台已经建好栏目,对于产品展示栏 栏目导航如下图所示: 
 

复制代码
代码如下:

{dede:channelartlist cacheid='channelsonlist' typeid=3 } 
<dd> 
<dl> 
<dt><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></dt> 
<dd> 
<ul> 
{dede:channel type='sun' row='10' noself='yes'} 
<li>&middot;&nbsp;<a href="[field:typeurl/]">[field:typename/]</a></li> 
{/dede:channel} 
</ul> 
</dd> 
</dl> 
</dd> 
{/dede:channelartlist} 

如果用以上代码的话,前台页面的显示将不太令人满意。对于有子类的二级目录,将会正确显示其子类,那些没有子类的 将显示其同类列表。如下图所示。 
 
这样的结果着实另人费解。 
接下来看第二种代码写法如下: 

复制代码
代码如下:

{dede:channelartlist typeid=3 } 
<dd> 
<dl> 
<dt><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></dt> 
<dd> 
<ul> 
{dede:sql sql='Select * from `lzz_arctype` where reid=~id~ ORDER BY id'} 
<li>&middot;&nbsp;<a href="[field:typedir function="cn_substr(@me,200,9) " /]">[field:typename/]</a></li> 
{/dede:sql} 
</ul> 
</dd> 
</dl> 
</dd> 
{/dede:channelartlist} 

注:lzz_arctype这个是因为我把表名前缀改为lzz_了。 
结果呢,当然应该会是你想要的了,如下图。