使用 {dede:arclist} 标签(最推荐、最灵活)
{dede:arclist} 是DedeCMS最核心、最强大的列表标签,不仅可以调用文章,还可以通过特定属性来调用专题。

(图片来源网络,侵删)
核心思路:
通过指定 channelid 为专题的频道ID,来筛选出所有属于该频道的文档(也就是专题)。
代码示例:
假设您的专题频道ID是 19(您可以在后台“频道模型” -> “内容频道管理”中查看),您想在列表页的某个位置调用这些专题。
<h3>相关专题</h3>
<ul class="special-list">
{dede:arclist
channelid='19'
row='6' len='30'
orderby='pubdate'
typeid='0'
}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]" />
<span>[field:title/]</span>
</a>
</li>
{/dede:arclist}
</ul>
代码详解:
channelid='19': 这是最关键的一步,它告诉系统只调用ID为19的频道内容,您需要将19替换为您自己网站上“专题”频道的实际ID。row='6': 调用6个专题,len='30'`: 标题最多显示30个字符。orderby='pubdate': 按发布时间排序,您也可以使用click(按点击量)或id(按ID)。typeid='0': 调用所有分类下的专题,如果您只想调用某个专题分类下的专题,可以将这里的0替换为对应的分类ID。[field:arcurl/]: 专题的链接地址。[field:litpic/]: 专题的缩略图。[field:title/]: 专题的标题。
使用 {dede:sql} 标签(直接数据库查询,最灵活)
如果您需要更复杂的查询条件,或者 {dede:arclist} 无法满足您的需求,可以直接使用SQL语句从数据库中查询专题信息。
核心思路:
直接编写SQL语句,查询 dede_archives (文档主表) 和 dede_channeltype (频道类型表) 中 channeltype 字段为专题类型的记录。

(图片来源网络,侵删)
代码示例:
<h3>热门专题</h3>
<ul class="special-list-sql">
{dede:sql sql="SELECT a.id, a.title, a.litpic, a.pubdate
FROM dede_archives a
LEFT JOIN dede_channeltype c ON a.channel = c.id
WHERE c.tempindex > 0 AND a.channel = 19
ORDER BY a.click DESC
LIMIT 0, 5"}
<li>
<a href="/special/show.php?specialid=[field:id/]">
<img src="[field:litpic/]" alt="[field:title/]" />
<span>[field:title/]</span>
</a>
</li>
{/dede:sql}
</ul>
代码详解:
sql="...": 这里是完整的SQL查询语句。FROM dede_archives a: 查询文档主表,并给它一个别名a。LEFT JOIN dede_channeltype c ON a.channel = c.id: 关联频道类型表,以判断是否为专题。WHERE c.tempindex > 0 AND a.channel = 19: 这是核心筛选条件。a.channel = 19: 同样,19是专题频道的ID,确保只查专题。c.tempindex > 0: 这个条件可以确保查询到的是启用了首页模板的频道,通常专题都满足这个条件,可以过滤掉一些无效数据。
ORDER BY a.click DESC: 按点击量降序排列,显示热门专题。LIMIT 0, 5: 从第0条开始,取5条记录。
/special/show.php?specialid=[field:id/]: 这是专题页面的默认链接规则,[field:id/]是专题的ID。
使用 {dede:sonchannel} 标签(调用专题分类)
如果您想先列出“专题”下的所有分类,然后让用户点击分类查看该分类下的专题,可以使用 {dede:sonchannel}。
核心思路:
调用指定分类(即专题频道)下的所有子分类。
代码示例:
假设您的“专题”一级分类ID是 18。
<h3>专题分类</h3>
<div class="special-category">
{dede:sonchannel typeid='18'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:sonchannel}
</div>
代码详解:
typeid='18': 指定要调用其子分类的父级分类ID,这里就是“专题”这个顶级分类的ID。[field:typelink/]: 分类链接地址。[field:typename/]: 分类名称。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:arclist} |
代码简洁、性能较好、官方推荐 | 灵活性相对SQL稍差 | 绝大多数情况下的首选,直接调用专题列表。 |
{dede:sql} |
极度灵活,可写任意复杂查询 | 代码稍复杂,需要懂一点SQL,有数据库安全风险(需注意防注入) | 需要特殊排序、特殊条件筛选时,例如调用与当前文章相关的专题。 |
{dede:sonchannel} |
专门用于调用分类 | 不能直接调用专题内容 | 需要先展示专题分类,再让用户进入的场景。 |
给您的最终建议:

(图片来源网络,侵删)
- 首选方法一 (
{dede:arclist}):它是最简单、最安全、最高效的方式,能够满足90%以上的列表页调用专题的需求。 - 确认频道ID:在使用任何方法之前,请务必先登录DedeCMS后台,进入“频道模型” -> “内容频道管理”,找到“专题”频道,记下它的ID。
- 结合使用:您可以将方法三和方法一结合起来,先显示专题分类,再在下方显示某个分类下的专题列表,实现更丰富的页面效果。
希望这些详细的解释和示例能帮助您成功在列表页调用专题!
