使用官方推荐标签 arclist (最常用、最灵活)
arclist 是织梦功能最强大的列表标签,可以满足绝大多数文章列表的调用需求。

(图片来源网络,侵删)
基础用法
在需要显示文章列表的模板文件(通常是 list_article.htm)中,使用以下代码:
{dede:arclist}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
</li>
{/dede:arclist}
效果: 默认会调用当前栏目的所有文章,按发布时间倒序排列,每篇文章显示标题、链接和发布日期。
arclist 常用参数详解
通过为 arclist 标签添加属性,可以实现非常灵活的调用。
| 参数名 | 作用 | 示例 |
|---|---|---|
typeid |
指定栏目ID,调用指定栏目的文章,多个ID用逗号隔开。 | typeid='1,3' (调用ID为1和3栏目的文章) |
row |
调用文章的数量。 | row='10' (调用10篇文章) |
infolen |
简介(长度。 | infolen='100' (摘要最多显示100个字符) |
orderby |
排序方式,常用值:pubdate(发布时间), hot(点击量), click(同hot), id(文章ID), sortrank(权重/置顶)。 |
orderby='hot' (按点击量排序) |
orderway |
排序方向。desc (降序,默认), asc (升序)。 |
orderway='asc' (升序排列) |
channelid |
指定模型ID,默认为1(文章模型)。 | channelid='1' (调用文章) |
flag |
特殊属性。h(头条), c(推荐), p(图片), f(幻灯片),多个用隔开。 |
flag='h|c' (调用头条和推荐文章) |
limit |
限制起始位置和数量,格式为 '起始数,数量'。 |
limit='5,10' (从第6篇文章开始,调用10篇) |
subday |
调用指定天数内发布的文章。 | subday='7' (调用最近7天内发布的文章) |
att |
调用带有缩略图的文章。 | att='1' (只调用有缩略图的文章) |
noatt |
调用不带缩略图的文章。 | noatt='1' (只调用没有缩略图的文章) |
完整代码示例
示例1:调用当前栏目下10篇最新文章,标题长度30,显示摘要和点击量

(图片来源网络,侵删)
{dede:arclist row='10' titlelen='30' infolen='100'}
<li>
<span class="title"><a href="[field:arcurl/]">[field:title/]</a></span>
<span class="info">([field:pubdate function='MyDate("Y-m-d", @me)'/]) 点击:[field:click/]</span>
<p class="intro">[field:description function='cn_substr(@me, 100)'/]</p>
</li>
{/dede:arclist}
示例2:调用指定栏目(ID=2)下的5篇推荐文章,按点击量排序
{dede:arclist typeid='2' row='5' flag='c' orderby='click'}
<div class="recommend-item">
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</div>
{/dede:arclist}
使用 list 标签 (在列表页调用当前栏目)
list 标签主要用于在*列表页模板(`list_.htm)**中,调用当前栏目的文章列表,它的功能和arclist` 类似,但语法更简洁,因为它默认就是调用当前栏目的内容。
基础用法
在 list_article.htm 中:
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
</li>
{/dede:list}
注意: {dede:list} 必须配合分页标签 {dede:pagelist listsize='5' listitem='index,pre,next,end,option'/} 使用。

(图片来源网络,侵删)
list 标签常用参数
| 参数名 | 作用 | 示例 |
|---|---|---|
pagesize |
每页显示的文章数量。 | pagesize='15' (每页显示15篇) |
orderby |
排序方式,同 arclist。 |
orderby='sortrank' (按权重排序) |
orderway |
排序方向,同 arclist。 |
orderway='asc' |
调用子栏目文章
有时候我们想在父栏目页调用其所有子栏目的文章,这需要结合 channel 和 arclist 标签来实现。
获取所有子栏目ID
用 channel 标签获取当前父栏目下所有子栏目的ID。
{dede:channel type='son' noself='yes'}
{dede:arclist typeid='[field:id/]' row='5' titlelen='30'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
{/dede:channel}
代码解释:
{dede:channel type='son' noself='yes'}: 获取当前栏目的所有子栏目(type='son'),并且不显示当前父栏目本身(noself='yes')。[field:id/]: 在循环中,[field:id/]代表每一个子栏目的ID。{dede:arclist typeid='[field:id/]'}: 在channel循环内部,调用arclist,并将typeid设置为当前子栏目的ID。
效果: 假设栏目A下有子栏目B和C,这段代码会先调用栏目B的5篇文章,然后调用栏目C的5篇文章。
使用SQL直接查询 (最灵活、最强大)
当 arclist 和 list 标签无法满足复杂的需求时(需要跨栏目、按特定字段筛选、关联其他表等),可以直接使用SQL语句。
基础SQL调用
{dede:sql sql='SELECT arc.id, arc.title, arc.pubdate, tp.typename
FROM dede_archives arc
LEFT JOIN dede_arctype tp ON arc.typeid = tp.id
WHERE arc.arcrank > -1
ORDER BY arc.pubdate DESC
LIMIT 0, 10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>栏目:[field:typename/] | 发布时间:[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
</li>
{/dede:sql}
代码解释:
sql='...': 指定要执行的SQL查询语句。SELECT ...: 选择需要输出的字段,如文章ID、标题、发布时间、栏目名称等。FROM dede_archives: 主表是文章表dede_archives。LEFT JOIN dede_arctype: 关联栏目表dede_arctype,以获取栏目名称。WHERE arc.arcrank > -1: 筛选条件,只调用已审核通过的文章(arcrank = -1表示未审核或草稿)。ORDER BY ... LIMIT ...: 排序和限制结果数量。[field:arcurl/]: 在SQL标签中,织梦会自动将文章ID转换为文章链接,非常方便。
总结与建议
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
arclist |
绝大多数情况,尤其是首页、推荐页、指定栏目页。 | 功能强大,参数丰富,官方支持,安全。 | 对于非常复杂的逻辑可能力不从心。 |
list |
列表页模板中调用当前栏目内容。 | 语法简洁,专为列表页设计。 | 只能调用当前栏目,不能跨栏目。 |
channel+arclist |
在父栏目页调用所有子栏目的文章。 | 结构清晰,易于理解。 | 需要嵌套标签,代码稍多。 |
sql |
复杂的、非标准的查询需求,如跨栏目、多表关联等。 | 灵活性最高,可以实现任何数据库操作。 | 需要SQL知识,有一定安全风险(注意防注入)。 |
给新手的建议:
- 首选
arclist:先尝试用arclist的各种参数来解决问题,它能解决90%以上的列表调用需求。 - 列表页用
list:在list_*.htm模板中,直接使用list标签,并记得加上分页。 - 遇到复杂需求再学SQL:当
arclist无法满足时,再考虑使用SQL查询,这是进阶技能。
希望这份详细的教程能帮助您在织梦CMS中灵活地调用各种文章列表!
