使用 arclist 标签(最常用、最灵活)
arclist 是织梦最核心、最强大的文章列表标签,几乎可以满足所有文章列表的调用需求。

(图片来源网络,侵删)
基本语法
{dede:arclist flag='h' typeid='栏目ID' row='10' titlelen='30' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</li>
{/dede:arclist}
参数详解
-
typeid='栏目ID':这是最关键的参数,用于指定你要调用哪个栏目的文章。- 如何获取栏目ID?登录织梦后台 -> 核心 -> 频道管理 -> 鼠标移到目标栏目上,浏览器状态栏或链接地址中会显示
typeid=数字,这个数字就是栏目ID。 - 如果要调用多个栏目的文章,用英文逗号隔开,
typeid='1,3,5'。 - 如果要调用顶级栏目的所有子栏目文章,可以使用
typeid='top'。
- 如何获取栏目ID?登录织梦后台 -> 核心 -> 频道管理 -> 鼠标移到目标栏目上,浏览器状态栏或链接地址中会显示
-
row='10':表示调用文章的数量,'10'代表调用10条。 len='30'显示的字数长度,'30'` 代表最多显示30个汉字(一个汉字算一个字符)。 -
orderby='pubdate':表示文章的排序方式。pubdate:按发布时间排序(默认)。click:按点击量排序。id:按文章ID排序。sortrank:按文章排序级别排序。
-
flag='h':文章特殊属性。
(图片来源网络,侵删)h:头条。c:推荐。p:图片。f:幻灯。s:滚动。a:特荐。b:图文。j:跳转。 可以组合使用,flag='hc'表示调用“头条”和“推荐”的文章。
-
innertext='':此参数可以自定义单个列表项的HTML模板,上面的li结构可以直接写在这里。
完整示例
假设我们要调用栏目ID为 2 的最新5篇文章,标题显示20个字。
HTML 代码:
<h3>栏目ID为2的最新文章</h3>
<ul>
{dede:arclist typeid='2' row='5' titlelen='20' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span class="time">[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</li>
{/dede:arclist}
</ul>
说明:

(图片来源网络,侵删)
[field:arcurl/]:文章的链接地址。[field:title/]:文章的标题。[field:pubdate function='MyDate('Y-m-d', @me)'/]:文章的发布时间,这里使用了一个函数MyDate来格式化时间,格式为年-月-日。
使用 channelartlist 结合 arclist(用于调用子栏目的最新文章)
这个方法通常用于首页或列表页,需要先循环父栏目,然后在每个父栏目下循环其子栏目的最新文章。
基本语法
{dede:channelartlist typeid='父栏目ID'}
<h2>{dede:field name='typename'/}</h2>
<ul>
{dede:arclist row='5' titlelen='20'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</li>
{/dede:arclist}
</ul>
{/dede:channelartlist}
参数详解
-
{dede:channelartlist}:循环父栏目。typeid='父栏目ID':指定要循环的父栏目,如果留空,默认循环所有顶级栏目。{dede:field name='typename'/}:获取当前循环到的父栏目的名称。
-
{dede:arclist}:在{channelartlist}内部使用时,它会自动默认调用当前父栏目下的所有子栏目的文章,无需再指定typeid。
完整示例
假设我们要调用顶级栏目(ID为1)下的所有子栏目的最新文章,每个子栏目显示3条。
HTML 代码:
<div class="sub-news-list">
{dede:channelartlist typeid='1'}
<div class="sub-channel">
<h3>{dede:field name='typename'/} <span>/ 最新文章</span></h3>
<ul>
{dede:arclist row='3' titlelen='22' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<em>[field:pubdate function='MyDate('m-d', @me)'/]</em>
</li>
{dede:arclist}
</ul>
</div>
{/dede:channelartlist}
</div>
使用 SQL 查询标签(最灵活,适合复杂需求)
当 arclist 标签无法满足非常复杂的查询条件时,可以直接使用 SQL 语句进行查询。
⚠️ 警告: 直接使用 SQL 有一定的风险,SQL 语句写错,可能会导致网站报错,请确保你的 SQL 语法正确,并且有数据库备份。
基本语法
{dede:sql sql="SELECT id, title, arcurl, pubdate FROM `dede_archives` WHERE typeid = '2' AND arcrank > -1 ORDER BY pubdate DESC LIMIT 0,10"}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</li>
{/dede:sql}
参数详解
sql="...":在这里写入你的 SQL 查询语句。dede_archives:织梦存放文章核心数据的表名,请勿随意修改。typeid = '2':指定栏目ID。arcrank > -1:这是一个非常重要的条件,用于过滤掉被审核人删除或待审核的文章,arcrank = -1通常表示文章被删除,加上这个条件可以保证调用到正常的文章。ORDER BY pubdate DESC:按发布时间倒序排列,即最新的在最前面。LIMIT 0,10:从第0条开始,获取10条数据,等同于row='10'。
字段映射
在 SQL 查询中,你查询出的字段(如 id, title, arcurl)需要用 [field:字段名/] 的方式来调用。
id:文章ID。:文章标题。arcurl:文章链接。pubdate:文章发布时间(时间戳格式)。description:litpic:文章缩略图。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
arclist |
简单、高效、官方推荐,功能强大 | 对于极特殊需求可能不够灵活 | 90% 的场景都推荐使用此方法,特别是调用单个或多个栏目的文章列表。 |
channelartlist |
结构清晰,适合处理父子栏目嵌套关系 | 语法相对固定,不如 arclist 灵活 |
首页、列表页,需要按父栏目分组显示其子栏目文章时。 |
sql 查询标签 |
灵活性极高,可以实现任何复杂的查询 | 有一定风险,对 SQL 语法有要求,可能影响性能 | arclist 无法实现的复杂筛选、排序、关联查询等高级需求。 |
对于绝大多数用户来说,强烈建议你优先使用 arclist,它足以应对绝大多数的调用需求。
