下面我将从基础到进阶,详细讲解如何调用文章,并提供最常用和最实用的代码示例。

核心概念:DedeCMS 的标签
DedeCMS 的调用功能主要通过其内置的 {dede:} 系列标签实现,这些标签可以理解为一个“指令”,告诉系统去哪里获取数据,以及如何展示这些数据。
基本结构:
{dede:标签名 属性名='属性值'}
<!-- 循环体,用于展示每一条数据 -->
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:标签名}
{dede:标签名 ...}: 开始标签,定义要调用的内容类型和筛选条件。属性名='属性值': 定义调用的条件,比如调用多少条 (row)、从哪里开始调用 (start)、按什么排序 (orderby) 等。[field:字段名/]: 在循环体内,用于显示单篇文章的具体字段,如标题、日期、点击量等。function="自定义函数": 对字段值进行格式化处理,比如日期格式化、截取文字长度等。{/dede:标签名}: 结束标签,表示调用结束。
最常用的文章调用标签:arclist
arclist 是调用文章列表最常用、最灵活的标签,适用于首页、栏目页、列表页等各种场景。
基础调用:调用指定栏目下的文章
这是最简单的用法,调用某个栏目下的最新几篇文章。

示例:调用栏目ID为 1 的最新 10 篇文章
{dede:arclist typeid='1' row='10'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
</li>
{/dede:arclist}
常用属性说明:
| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,多个ID用逗号隔开,如 '1,2,3',如果为空或为 0,表示调用所有栏目(推荐使用 channelid 代替)。 |
typeid='1' |
row |
调用文章数量。 | row='10' |
infolen |
内容简介长度(字符数)。 | infolen='100' |
orderby |
排序方式,常用值:pubdate (发布时间,默认), hot (点击量), sortrank (后台排序), id (文章ID)。 |
orderby='hot' |
orderway |
排序方向。desc (降序,默认), asc (升序)。 |
orderway='asc' |
channelid |
指定模型ID。channelid='-1' 表示调用所有栏目,比 typeid='0' 更常用。 |
channelid='-1' |
limit |
限制起始和结束,格式为 起始数,数量。limit='0,5' 表示从第1条开始取5条;limit='5,10' 表示从第6条开始取10条。 |
limit='0,5' |
flag |
文章属性,常用值:h (头条), c (推荐), p (图片), s (跳转),多个用 隔开,如 flag='h|c'。 |
flag='h' |
进阶调用:常用字段与函数
在循环体内,我们可以使用 [field:字段名/] 来调用文章的各种信息。
常用字段:

| 字段名 | 说明 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接(URL) |
[field:pubdate/] |
发布时间(时间戳) |
[field:click/] |
点击量 |
[field:litpic/] |
文章缩略图 |
[field:description/] |
文章简介 |
[field:typedir/] |
栏目目录 |
[field:id/] |
文章ID |
常用函数(对字段进行处理):
- 日期格式化:
function="MyDate('格式',@me)"[field:pubdate function="MyDate('Y-m-d H:i',@me)"]->2025-10-27 15:30[field:pubdate function="MyDate('Y年m月d日',@me)"]->2025年10月27日
- 文字截断:
function="cn_substr(@me, 长度)"[field:title function="cn_substr(@me, 20)"]-> 标题只显示前20个字符
- 去除HTML标签:
function="Html2Text(@me)"[field:description function="Html2Text(@me)"]-> 获取纯文本简介
实战场景示例
场景1:首页调用最新文章(带缩略图)
调用所有栏目的最新8篇文章,显示标题、日期、缩略图和简介。
{dede:arclist row='8' titlelen='30' orderby='pubdate' orderway='desc'}
<div class="news-item">
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
</a>
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<p class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</p>
<p class="summary">[field:description function="cn_substr(@me, 80)"]...</p>
</div>
{/dede:arclist}
场景2:调用指定栏目的子栏目文章
调用栏目ID为 2 的所有直接子栏目下的最新文章。
{dede:arclist typeid='2' row='5'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:arclist}
注意:typeid='2' 会调用ID为2的栏目本身及其所有子栏目的文章,如果只想调用其直接子栏目,需要在后台栏目设置中,确保“选项”里“支持投稿”等勾选正确,或者更高级的做法是配合SQL查询。
场景3:调用带有特定属性的文章(如“头条”)
调用所有标记为“头条”属性的最新5篇文章。
{dede:arclist flag='h' row='5' titlelen='40'}
<li class="headlines">
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
其他重要调用标签
除了 arclist,还有几个标签也经常使用。
loop:万能循环标签
loop 可以直接执行SQL语句,灵活性最高,适合 arclist 无法满足的复杂需求。
示例:调用文章ID从 10 到 20 的文章
{dede:loop table='dede_archives' sort='id' row='11' if='id>=10 and id<=20'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:loop}
table: 要查询的表名(dede_archives是文章主表)。sort: 排序字段。row: 循环次数。if: SQL查询的WHERE条件。
sql:执行任意SQL语句
与 loop 类似,但 sql 标签可以写完整的SQL语句,并支持 {dede:field} 来获取外部变量。
示例:调用栏目ID为1的栏目名称
{dede:sql sql='SELECT typename FROM dede_arctype WHERE id = ~typeid~'}
当前栏目是:[field:typename/]
{/dede:sql}
~typeid~: 这种写法可以将外部变量(如当前栏目ID)传入SQL语句中。
模板文件位置
这些调用代码通常放在 DedeCMS 的模板文件中,主要路径是:
/templets/default/
index.htm: 首页模板list_article.htm: 文章列表页模板article_article.htm: 文章内容页模板- 在后台“模板” -> “默认模板管理”中可以修改这些文件。
| 调用需求 | 推荐标签 | 关键属性/字段 |
|---|---|---|
| 调用列表页文章 | {dede:arclist} |
typeid, row, orderby, titlelen, [field:arcurl], [field:title] |
| 调用单篇文章详情 | {dede:field} |
name='body' (文章内容), name='title' (文章标题) |
| 调用栏目信息 | {dede:field} |
name='typename' (栏目名), name='typedir' (栏目目录) |
| 执行复杂查询 | {dede:loop} 或 {dede:sql} |
table, sql, if |
掌握 arclist 标签及其属性、字段和函数,已经可以解决 DedeCMS 中 90% 的文章调用问题,遇到更复杂的需求,再考虑使用 loop 或 sql 标签,希望这份详细的指南能帮助你!
