在DedeCMS(织梦CMS)中,循环调用一二级栏目通常使用channel标签或channelartlist标签结合嵌套实现,以下是几种常见的方法:

(图片来源网络,侵删)
方法1:使用channel标签嵌套(推荐)
<ul>
{dede:channel type='top' row='10' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
<!-- 二级栏目调用 -->
{dede:channel type='son' noself='yes'}
<ul>
<li><a href="[field:typelink/]">[field:typename/]</a></li>
</ul>
{/dede:channel}
</li>
{/dede:channel}
</ul>
方法2:使用channelartlist标签(支持更多字段)
<ul>
{dede:channelartlist typeid='top' row='10'}
<li>
<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
<!-- 二级栏目调用 -->
{dede:channel type='son' noself='yes'}
<ul>
<li><a href="[field:typelink/]">[field:typename/]</a></li>
</ul>
{/dede:channel}
</li>
{/dede:channelartlist}
</ul>
方法3:使用sql标签(灵活查询)
{dede:sql sql="SELECT * FROM `#@__arctype` WHERE reid=0 ORDER BY sortrank ASC"}
<a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]">[field:typename/]</a>
{dede:sql sql="SELECT * FROM `#@__arctype` WHERE reid=[field:id/] ORDER BY sortrank ASC"}
<a href="[field:typedir function='str_replace("{cmspath}","",@me)'/]">[field:typename/]</a>
{/dede:sql}
{/dede:sql}
参数说明:
type='top':调用顶级栏目type='son':调用子栏目noself='yes':不包含当前栏目(避免重复)row='10':限制调用数量currentstyle:当前栏目高亮样式
注意事项:
- 确保栏目缓存已更新(后台 → 系统 → 更新缓存)
- 如果栏目链接不显示,检查
typedir字段是否包含{cmspath} - 复杂结构建议使用
channelartlist,它支持更多字段(如typeid、typeurl等)
根据实际需求选择合适的方法,通常方法1或方法2已能满足大部分需求。

(图片来源网络,侵删)
