下面我将从基础到高级,详细讲解各种调用栏目的方法,并提供清晰的示例。

最常用的标签:{dede:channel}
{dede:channel} 是专门用于调用栏目的标签,功能强大,参数丰富。
基础调用:获取所有顶级栏目
这是最简单的用法,会列出系统中所有的顶级栏目。
语法:
{dede:channel type='top'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
参数说明:

type='top': 指定只调用顶级栏目,这是最常用的参数。
示例: 假设你的网站有“首页”、“公司简介”、“产品中心”、“新闻中心”、“联系我们”这几个顶级栏目,上面的代码会输出:
<a href="/plus/list.php?tid=1">公司简介</a> <a href="/plus/list.php?tid=2">产品中心</a> <a href="/plus/list.php?tid=3">新闻中心</a> <a href="/plus/list.php?tid=4">联系我们</a>
(注意:首页通常不通过 channel 标签调用,而是直接写 <a href="/">首页</a>)
调用指定层级的栏目
如果你想调用顶级栏目下的子栏目,可以使用 son 或 self 参数。
调用顶级栏目下的所有子栏目 (type='son')
son 表示调用指定栏目的直接子栏目,你需要通过 typeid 参数指定父栏目的ID。

语法:
{dede:channel type='son' typeid='2'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
typeid='2': 这里假设“产品中心”栏目的ID是2,这段代码会调用出“产品中心”下的所有子栏目。
调用与指定栏目同级的栏目 (type='self')
self 表示调用与指定栏目同级的所有栏目,包括它自己。
语法:
{dede:channel type='self' typeid='2'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
typeid='2': 假设当前在“产品中心”栏目,这段代码会列出“产品中心”以及它同级的其他所有顶级栏目。
带样式的调用与当前栏目高亮
在实际开发中,我们经常需要给栏目添加样式,并且让当前所在的栏目高亮显示。
语法:
{dede:channel type='top' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li><a href="[field:typeurl/]">[field:typename/]</a></li>
{/dede:channel}
参数说明:
currentstyle: 这个参数非常实用,当循环到的栏目是当前页面所在栏目时,会使用currentstyle里的内容来渲染,而不是使用默认的<li>。~typename~和~typelink~: 在currentstyle中,使用 包裹的字段名会被替换成对应的值,~typename~会被替换成栏目名称,~typelink~会被替换成栏目链接。
示例输出:
- 如果当前页面在“新闻中心”(假设ID=3),那么输出会是:
<li><a href="/plus/list.php?tid=1">公司简介</a></li> <li><a href="/plus/list.php?tid=2">产品中心</a></li> <li class="active"><a href="/plus/list.php?tid=3">新闻中心</a></li> <li><a href="/plus/list.php?tid=4">联系我们</a></li>
递归调用子栏目:{dede:channelartlist}
这个标签用于递归调用栏目及其所有层级的子栏目,非常适合用来生成多级导航菜单。
语法:
{dede:channelartlist}
<dl>
<dt><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></dt>
<dd>
{dede:channel type='son'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
</dd>
</dl>
{/dede:channelartlist}
工作原理:
{dede:channelartlist}会循环遍历所有顶级栏目。- 对于每一个顶级栏目,它会输出
<dt>中的内容(即顶级栏目名称和链接)。 - 在
<dd>中,嵌套使用了{dede:channel type='son'}来调用当前顶级栏目下的直接子栏目。
示例输出(假设“产品中心”有“产品A”和“产品B”两个子栏目):
<dl>
<dt><a href="/plus/list.php?tid=1">公司简介</a></dt>
<dd>
<!-- 没有子栏目,此处为空 -->
</dd>
</dl>
<dl>
<dt><a href="/plus/list.php?tid=2">产品中心</a></dt>
<dd>
<a href="/plus/list.php?tid=5">产品A</a>
<a href="/plus/list.php?tid=6">产品B</a>
</dd>
</dl>
<dl>
<dt><a href="/plus/list.php?tid=3">新闻中心</a></dt>
<dd>
<!-- 没有子栏目,此处为空 -->
</dd>
</dl>
注意:
{dede:channelartlist}默认只调用顶级栏目,如果你需要调用所有层级的栏目(无限级),可以配合channel标签的son属性,并在后台栏目设置中开启“支持多级目录”选项。
调用指定栏目(常用于首页调用某个栏目内容)
有时候我们想在首页或某个页面调用特定栏目,而不是所有栏目,这时可以使用 typeid 参数。
调用指定栏目(及其子栏目)的文章列表
使用 {dede:arclist} 标签,并通过 typeid 指定栏目ID。
语法:
{dede:arclist typeid='3' titlelen='30' row='5'}
<li>
<span class='date'>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
参数说明:
typeid='3': 指定调用ID为3的栏目下的文章,如果调用该栏目及其所有子栏目的文章,需要设置typeid='3,5,6'或者使用typeid='3'并在后台栏目设置中开启“包含子栏目”,len='30'`: 标题长度,截取30个字符。row='5': 调用5条文章。
调用指定栏目(及其子栏目)的子栏目列表
使用 {dede:channel} 标签,并通过 typeid 指定父栏目ID。
语法:
{dede:channel typeid='2' type='son'}
<a href="[field:typeurl/]">[field:typename/]</a> |
{/dede:channel}
typeid='2': 指定调用ID为2的栏目下的子栏目。
调用栏目相关信息(如栏目名称、简介等)
在模板中,你可能需要获取当前栏目的名称、描述、关键词等信息,可以使用 语法: 常用 希望这份详细的指南能帮助你熟练掌握织梦CMS的栏目调用!如果遇到具体问题,可以提供你的模板代码和需求,我可以帮你进一步分析。{dede:field}
<h1>{dede:field name='typename'/}</h1>
<p>{dede:field name='description' function='htmlspecialchars(@me)'/}</p>
<meta name="keywords" content="{dede:field name='keywords'/}">
field 字段:
typename: 栏目名称description: 栏目描述keywords: 栏目关键词id: 栏目IDtypedir: 栏目目录seotitle: 栏目SEO标题
总结与速查表
主要用途
常用参数
示例
{dede:channel}调用栏目列表(最常用)
type='top' (顶级), type='son' (子栏目), typeid='x' (指定栏目), currentstyle='...' (当前样式高亮){dede:channel type='top' currentstyle...}
{dede:channelartlist}递归调用多级栏目,适合制作多级导航
无
{dede:channelartlist}<dt>...{dede:channel type='son'}...{/dede:channel}</dt>...{/dede:channelartlist}
{dede:arclist}调用文章列表,但可通过
typeid 指定栏目typeid='x' (指定栏目), row='x' (条数), titlelen='x' (标题长度){dede:arclist typeid='3' row='5'}
{dede:field}调用当前栏目的单个信息
name='typename', name='description'<h1>{dede:field name='typename'/}</h1>
