使用 arclist 标签(最常用、最灵活)
arclist 是织梦中最强大的文章列表标签,可以满足绝大多数的文章调用需求,它可以指定栏目、文章数量、排序方式、是否包含子栏目等。

(图片来源网络,侵删)
基本语法
{dede:arclist flag='' typeid='' row='' titlelen='' orderby=''}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
{/dede:arclist}
参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,调用指定栏目下的文章。 | typeid='1' (调用栏目ID为1下的文章) |
| 多个栏目ID,用逗号隔开。 | typeid='1,3,5' (调用栏目1,3,5下的文章) |
|
包含子栏目,在栏目ID后加 c,表示调用该栏目及其所有子栏目下的文章。 |
typeid='1c' (调用栏目ID为1及其所有子栏目的文章) |
|
row |
调用文章数量,必须设置。 | row='10' (调用10篇文章) |
orderby |
排序方式。 | orderby='hot' (按浏览量从高到低) orderby='click' (同上) orderby='pubdate' (按发布时间,默认) orderby='sortrank' (按后台排序) orderby='rand' (随机排序) |
orderway |
排序方向。desc 降序(从高到低),asc 升序(从低到高)。 |
orderway='desc' |
flag |
特定属性文章,用 分隔多个属性。 | flag='h' (头条) flag='c' (推荐) flag='h,c' (头条或推荐) flag='a' (特荐) |
channelid |
指定模型ID。1 代表文章,2 代表图集,以此类推。 |
channelid='1' (只调用文章) |
limit |
记录起始偏移,格式为 起始数,记录数。 |
limit='5,10' (从第6条开始,调用10条) |
subday |
指定天数内,调用多少天之内发布的文章。 | subday='7' (调用一周内发布的文章) |
noflag |
排除特定属性文章,与 flag 相反。 |
noflag='h' (调用非头条的文章) |
综合示例
场景:调用栏目ID为5的“产品中心”及其所有子栏目下的最新5篇文章,标题显示30个字符。
<h3>最新产品</h3>
<ul>
{dede:arclist typeid='5c' row='5' titlelen='30' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
</ul>
使用 list 标签(用于当前栏目列表)
list 标签通常用在列表页模板(list_article.htm)中,用于显示当前栏目下的文章列表,它不需要指定 typeid,因为默认就是当前栏目。
基本语法
{dede:list pagesize='10'}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
{/dede:list}
关键参数
| 参数 | 说明 | 示例 |
|---|---|---|
pagesize |
每页显示文章数量。 | pagesize='15' (每页显示15篇文章) |
分页调用
在 list 标签结束后,加上分页标签。

(图片来源网络,侵删)
{dede:list pagesize='10'}
<!-- 文章列表项 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:list}
<!-- 分页条 -->
<div class="dede_pages">
<ul>
<li><span>共{dede:field.totalcount/}条记录</span></li>
{dede:pagelist listsize='4'/}
</ul>
</div>
使用 sql 标签(最高级、最灵活)
当 arclist 和 list 无法满足复杂的查询需求时,可以使用 sql 标签直接执行自定义的SQL语句。注意:此方法需要你对织梦的数据库表结构有一定了解,且存在一定的安全风险,务必做好过滤。
常用数据表
dede_archives: 文章主表,包含文章ID、标题、发布时间等。dede_arctype: 栏目表,包含栏目ID、栏目名称等。dede_addonarticle: 文章附加表,包含文章内容、作者等。
基本语法
{dede:sql sql='SELECT * FROM `dede_archives` ORDER BY pubdate DESC LIMIT 0, 10'}
<a href='/plus/view.php?aid=[field:id/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
{/dede:sql}
安全过滤(非常重要!)
为了避免SQL注入,你应该使用 safe 属性来过滤输出。
{dede:sql sql='SELECT * FROM `dede_archives` WHERE typeid = 5 ORDER BY pubdate DESC LIMIT 0, 10'}
<a href='/plus/view.php?aid=[field:id/]' title="[field:title function='html2text(@me)'/]">[field:title function='htmlspecialchars(@me)'/]</a>
{/dede:sql}
function='html2text(@me)': 将HTML标签转换为纯文本,用于title属性。function='htmlspecialchars(@me)': 将HTML特殊字符转义,防止XSS攻击。
综合示例
场景:调用“头条”和“推荐”属性的文章,且文章标题不为空。
{dede:sql sql="
SELECT a.id, a.title, a.pubdate
FROM `dede_archives` AS a
LEFT JOIN `dede_arctype` AS t ON a.typeid = t.id
WHERE (a.flag LIKE '%h%' OR a.flag LIKE '%c%') AND a.title != ''
ORDER BY a.pubdate DESC
LIMIT 0, 8
"}
<li>
<a href='/plus/view.php?aid=[field:id/]' title="[field:title function='html2text(@me)'/]">[field:title/]</a>
<small>[field:pubdate function="MyDate('m-d', @me)"/]</small>
</li>
{/dede:sql}
调用特定栏目(如“关于我们”)的单篇文章
有时候你可能只想调用某个栏目下的一篇文章,关于我们”页面的内容。

(图片来源网络,侵删)
使用 arclist 调用单篇
设置 row='1' 即可。
{dede:arclist typeid='2' row='1'}
<h2>[field:title/]</h2>
[field:body/]
{/dede:arclist}
typeid='2'是“关于我们”栏目的ID。[field:body/]用于调用文章的全文内容。
使用 sql 调用单篇
{dede:sql sql='SELECT body FROM `dede_addonarticle` WHERE aid = 10'}
[field:body/]
{/dede:sql}
- 这种方法需要你知道文章的ID(
aid)。
总结与对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
arclist |
绝大多数列表调用(首页、栏目页、自定义页面) | 功能强大,参数丰富,灵活,安全 | 参数较多,初学者可能需要记忆 |
list |
当前栏目的列表页 | 语法简单,无需指定栏目ID | 只能用于列表页,功能相对固定 |
sql |
复杂、特殊、跨表的查询 | 灵活性最高,可以实现任何逻辑 | 需要SQL知识,有安全风险,性能稍差 |
| 单篇调用 | 调用固定的一篇文章(如关于我们) | 简单直接 | 只能调用特定ID的文章 |
建议:
- 日常使用,优先使用
arclist,它能解决90%的需求。 - 在列表页,使用
list- 只有在
arclist无法实现时,再考虑使用sql标签,并务必做好安全过滤。 - 只有在
希望这份详细的指南能帮助你熟练地在织梦中调用多篇文章!
