{dede:channel}
{dede:channel} 是调用栏目的核心标签,通过设置不同的属性,可以实现调用顶级栏目、下级栏目、同级栏目等多种效果。

(图片来源网络,侵删)
调用指定栏目的所有直接下级栏目(最常用)
这是最常见的需求,例如在网站的“产品中心”栏目下,列出其所有一级子栏目(如“产品A”、“产品B”、“产品C”)。
适用场景:
在列表页(list_article.htm页(article_article.htm)中,获取当前栏目的所有直接子栏目。
代码示例:
<h2>下级栏目列表</h2>
<ul>
{dede:channel type='son' currentstyle='
<li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
代码详解:

(图片来源网络,侵删)
-
{dede:channel type='son' ...}:type='son':这是最关键的属性,表示调用当前栏目的直接下级栏目,如果你想在其他地方调用,需要配合typeid属性使用(见方法二)。
-
currentstyle='...':- 这个属性用于高亮显示当前所在的栏目。
- 当循环的栏目正好是当前页面所在的栏目时,会使用
currentstyle里的代码。 [field:typelink/]和[field:typename/]是栏目字段,分别代表栏目的链接和名称。
-
[field:typename/]和[field:typelink/]:这是栏目标签的底层字段,用于在循环中获取每个子栏目的名称和链接。
(图片来源网络,侵删)
调用任意指定栏目的下级栏目
有时候你可能想在首页或者某个固定位置,调用某个特定栏目的下级栏目,而不是当前栏目的下级。
适用场景: 在网站首页调用“关于我们”栏目的所有子栏目;或者在“产品中心”列表页调用“产品A”的所有子分类。
代码示例:
假设你要调用栏目ID为 5 的栏目的所有下级栏目。
<h2>产品分类</h2>
<ul>
{dede:channel typeid='5' type='son' row='8'}
<li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
代码详解:
-
typeid='5':- 这个属性指定了要查询的父栏目的ID,你需要将
5替换为你自己想要调用的栏目的ID。 - 如何获取栏目ID? 登录织梦后台,【栏目管理】 -> 点击要查看的栏目名称,浏览器地址栏中的
cid=数字就是该栏目的ID。
- 这个属性指定了要查询的父栏目的ID,你需要将
-
row='8':- 这个属性用于限制输出的栏目数量,
'8'表示只显示前8个子栏目,如果不需要限制,可以去掉这个属性。
- 这个属性用于限制输出的栏目数量,
调用当前栏目的所有下级栏目(包括多级)
如果你的栏目结构是多级的(产品 -> 电子产品 -> 手机 -> iPhone),而你想在“电子产品”页面列出其下的所有层级的子栏目(包括“手机”和“iPhone”),而不是仅仅列出直接子栏目“手机”。
适用场景: 生成一个完整的、多级的栏目导航树。
代码示例:
<h2>完整栏目树</h2>
<ul>
{dede:channel type='sun' currentstyle='
<li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
代码详解:
type='sun':sun是 "son" 的扩展,表示调用当前栏目的所有下级栏目,不限层级,会递归查找所有子孙栏目。
调用同级栏目(兄弟栏目)
调用与当前栏目处于同一层级的其他栏目。
适用场景:页的侧边栏,列出“相关栏目”,即与当前栏目平行的其他栏目。
代码示例:
<h2>相关栏目</h2>
<ul>
{dede:channel type='self' currentstyle='
<li class="current"><a href="[field:typelink/]">[field:typename/]</a></li>
'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
代码详解:
type='self':- 表示调用与当前栏目同级的栏目。
总结与对比
| 标签属性 | 功能描述 | 常用场景 |
|---|---|---|
type='son' |
调用指定栏目的直接下级栏目。 | 列表页侧边栏、面包屑下方导航。 |
typeid='数字' |
配合 type 使用,指定要查询的父栏目ID。 |
在首页或其他页面调用特定栏目的子栏目。 |
type='sun' |
调用指定栏目的所有下级栏目(多级)。 | 生成多级导航树。 |
type='self' |
调用与当前栏目同级的栏目。 | 内容页的“相关/兄弟栏目”列表。 |
currentstyle |
高亮显示当前栏目。 | 任何需要突出显示当前所在位置的栏目列表。 |
row='数字' |
限制输出的栏目数量。 | 当子栏目过多时,只显示前N个。 |
实用技巧
-
如何获取栏目ID?
- 进入后台【栏目管理】,点击目标栏目的名称,浏览器地址栏的
cid=XXX中的XXX就是ID。
- 进入后台【栏目管理】,点击目标栏目的名称,浏览器地址栏的
-
如何为栏目添加自定义字段?
- 如果需要在栏目列表中显示更多信息(如栏目图片、简介等),可以在后台【核心】->【内容模型管理】->【栏目字段管理】中添加自定义字段,然后在模板中通过
[field:自定义字段名/]调用。
- 如果需要在栏目列表中显示更多信息(如栏目图片、简介等),可以在后台【核心】->【内容模型管理】->【栏目字段管理】中添加自定义字段,然后在模板中通过
-
如何判断是否有下级栏目?
- 有时候你可能想在有下级栏目时才显示这个列表,可以使用PHP判断:
{dede:sql sql='SELECT id FROM dede_arctype WHERE reid=~typeid~ LIMIT 1'} {if dede:field name='id'/} <!-- 如果查询结果不为空,说明有下级栏目 --> <h2>下级栏目</h2> <ul> {dede:channel type='son'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel} </ul> {/if} {/dede:sql} - 这个方法通过SQL查询当前栏目(
~typeid~是织梦的内置变量)下是否有子栏目,有则执行输出。
- 有时候你可能想在有下级栏目时才显示这个列表,可以使用PHP判断:
希望这份详细的指南能帮助你熟练地在织梦中调用下级栏目!
