使用 {dede:arclist} 标签(最常用)
{dede:arclist} 是 DedeCMS 最核心、最灵活的文章列表标签,适用于绝大多数场景,比如首页、列表页、内容页等。

(图片来源网络,侵删)
基础语法
{dede:arclist flag='' typeid='' row='' col='' titlelen='' orderby='' keyword=''}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:arclist}
参数详解
-
typeid(栏目ID)typeid='0':调用所有栏目的文章(包括所有子栏目)。typeid='1,2,3':调用指定多个栏目ID下的文章。typeid='top':调用顶级栏目下的文章。- 如果不写此参数,默认调用当前栏目的文章及其子栏目的文章。
-
row(调用数量)row='10':表示调用10篇文章。row=''或不写,默认调用10篇。
-
col(分列)col='2':将调用的文章分2列显示,通常与row配合使用,row='6' col='2'会显示3行2列共6篇文章。
-
titlelen(标题长度)
(图片来源网络,侵删)titlelen='30'最多显示30个字符(一个汉字算2个字符,一个字母算1个字符)。
-
orderby(排序方式)orderby='pubdate':按发布时间降序(默认)。orderby='hot':按点击量(浏览量)降序。orderby='click':同上,按点击量降序。orderby='sortrank':按文章排序级别(后台设置)降序。orderby='id':按文章ID降序。orderby='rand':随机调用文章。orderby='weight':按文章权重降序(权重越高,排序越靠前)。
-
orderway(排序顺序)orderway='desc':降序(默认)。orderway='asc':升序。
-
keyword(关键词)keyword='关键词1,关键词2':调用包含指定关键词的文章。
-
flag(特殊属性)flag='h':调用头条文章。flag='c':调用推荐文章。flag='p':调用图片集文章。flag='a':调用带图片的文章。- 可以组合使用,如
flag='hc'表示调用“头条”且“推荐”的文章。
-
innertext(模板内容)- 这是
{dede:arclist}的一个强大功能,可以自定义每个列表项的HTML结构。
- 这是
实例:调用所有文章,按发布时间排序,显示10篇
这是最符合你问题“调用所有文章”的直接答案。
{dede:arclist typeid='0' row='10' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a>
<span class="time">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
代码解释:
typeid='0':确保调用所有栏目的文章。row='10':显示10篇。orderby='pubdate' orderway='desc':按发布时间倒序排列(最新的在最前面)。[field:arcurl/]:文章链接。[field:title/]。[field:pubdate function="MyDate('Y-m-d',@me)"/]:发布日期,通过function函数格式化为年-月-日的格式。
使用 {dede:list} 标签(仅用于列表页)
{dede:list} 标签专门用于列表模板(list_*.htm)中,它的作用是分页列出当前栏目下的所有文章。
重要特点:
- 只能在列表页使用:如果你把它放在首页 (
index.htm) 或内容页 (article_*.htm),它不会显示任何内容。 - 自动分页:它会自动根据后台的“列表每页条数”设置进行分页。
- 默认调用当前栏目:它不能像
arclist那样通过typeid指定其他栏目。
基础语法(在列表页模板 list_xxx.htm 中)
{dede:list pagesize='20'}
<li>
<a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a>
<span class="time">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
分页代码
在 {dede:list} 标签之后,通常需要加上分页代码。
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
使用SQL语句调用(最灵活,适合复杂需求)
当 arclist 和 list 标签无法满足复杂的查询条件时(调用特定时间段、特定作者、特定自定义字段的文章),可以直接使用SQL语句。
基础语法
{dede:sql sql='SELECT * FROM `dede_archives` ORDER BY pubdate DESC LIMIT 0, 10'}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:sql}
代码详解
-
sql='...':这里写标准的SQL查询语句。SELECT * FROM dede_archives:从文章主表dede_archives中查询所有字段。dede_是你的表前缀,如果你的表前缀不是dede_,需要修改。ORDER BY pubdate DESC:按发布时间降序排序。LIMIT 0, 10:从第0条记录开始,查询10条。LIMIT 起始位置, 数量。
-
注意:
- 使用SQL需要你对DedeCMS的数据表结构有一定了解。
- SQL语句中不能出现
dede:等模板标签,必须是纯SQL。 - 调用出来的字段需要用
[field:字段名/]来显示。
更复杂的SQL实例(调用所有文章,并按权重排序)
{dede:sql sql='SELECT * FROM `dede_archives` WHERE arcrank > -1 ORDER BY weight DESC, pubdate DESC LIMIT 0, 15'}
<li>
<a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a>
<span>权重:[field:weight/]</span>
</li>
{/dede:sql}
代码解释:
WHERE arcrank > -1:这是一个非常实用的条件,arcrank是文章审核状态字段,-1为待审核,0为正常,> -1表示只调用已审核的正式文章。ORDER BY weight DESC, pubdate DESC:先按权重降序,权重相同的再按发布时间降序。
总结与推荐
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
{dede:arclist} |
首页、列表页、内容页等任何地方 | 功能强大,参数灵活,是首选 | 参数较多,初学者需要学习 |
{dede:list} |
*仅限列表页 (`list_.htm`)** | 自动分页,调用当前栏目非常方便 | 功能单一,只能在列表页用,无法调用全站 |
{dede:sql} |
复杂查询、特殊需求 | 灵活性最高,可以实现任何逻辑 | 需要SQL知识,有一定风险(如果SQL写错可能导致页面出错) |
给你的最终建议:
如果你的需求是在网站的某个位置(如首页、侧边栏)显示全站的文章列表,请直接使用方法一 (
{dede:arclist})。
代码示例(推荐):
<!-- 调用全站所有已审核文章,按发布时间倒序,显示12篇 -->
{dede:arclist typeid='0' row='12' orderby='pubdate' orderway='desc' flag=''}
<div class="article-item">
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<p class="meta">作者:[field:writer/] 发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</p>
<p class="summary">[field:description function='cn_substr(@me, 100)']...</p>
</div>
{/dede:arclist}
这个例子调用了全站 (typeid='0') 的所有文章 (flag='',即没有特殊限制,包含了已审核的普通文章),按最新发布排序,显示12篇,并且展示了标题、作者、时间和摘要的完整信息。
