{dede:list} 主要用于在列表页(如首页、栏目页、搜索结果页等)调用文章列表,是构建网站内容页面的基础。

(图片来源网络,侵删)
{dede:list} 的基本语法
{dede:list} 标签通常由三部分组成:开始标签、中间的循环体和结束标签。
{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 pagesize='10'}: 这是标签的开始。pagesize='10': 这是一个属性,用于设置每页显示的文章数量,这是最常用的属性之一,如果不设置,它会使用后台“核心模型” -> “内容模型管理” -> “普通文章” 中设置的“列表每页显示数”。
<li>...</li>: 这是标签的循环体。- 在
{dede:list}和{/dede:list}之间的所有代码都会被循环执行,每循环一次,就代表一篇文章。 - 循环体内,我们使用
[field:xxx/]这样的字段来调用文章的具体信息。
- 在
{/dede:list}: 这是标签的结束,标志着循环的终止。
常用属性
{dede:list} 标签支持多种属性,用于控制列表的显示内容。
| 属性名 | 说明 | 示例 |
|---|---|---|
pagesize |
设置每页显示的文章数量。 | pagesize='20' |
infolen |
设置文章摘要(简介)的显示长度(字符数)。 | infolen='150' |
orderby |
排序方式,这是非常重要的属性,可选值:id (默认, 按文章ID排序)sortrank (按文章排序值,即后台设置的权重)pubdate (按发布时间排序)click (按点击量排序)arcrank (按文章等级排序) |
orderby='pubdate' |
orderway |
排序方向,配合 orderby 使用。desc (默认, 降序,即从大到小/新到旧)asc (升序,即从小到大/旧到新) |
orderby='click' orderway='desc' |
channel |
指定调用特定模型的文章,常用模型ID:1 (普通文章)-1 (外部链接) |
channel='1' |
typeid |
指定调用某个栏目(及其子栏目)下的文章,通常在栏目页模板中,这个值会自动获取当前栏目ID,无需手动设置。 | typeid='5' |
limit |
用于限制记录的起始位置和数量,格式为 "起始ID,数量"。limit='0,10' 表示从第0条开始,显示10条。pagesize 和 limit 不要同时使用。 |
limit='5,10' |
subday |
调用指定天数内发布的文章。subday='7' 表示调用最近7天内发布的文章。 |
subday='30' |
keyword |
调用包含指定关键词的文章。 | keyword='织梦' |
常用字段 (Field)
在 {dede:list} 的循环体内,使用 [field:字段名/] 来获取文章的各个信息。

(图片来源网络,侵删)
| 字段名 | 说明 | 示例 |
|---|---|---|
[field:title/] |
。 | <a href="[field:arcurl/]">[field:title/]</a> |
[field:arcurl/] |
文章的完整链接URL。 | <a href="[field:arcurl/]">查看详情</a> |
[field:pubdate/] |
文章的发布时间,格式为 YYYY-MM-DD HH:II:SS。 |
[field:pubdate/] |
[field:description/] |
文章的摘要(简介)。 | [field:description/] |
[field:litpic/] |
文章的缩略图路径。 | <img src="[field:litpic/]" alt="[field:title/]"> |
[field:click/] |
文章的点击量。 | 点击:[field:click]次 |
[field:writer/] |
文章的作者。 | 作者:[field:writer] |
[field:source/] |
文章的来源。 | 来源:[field:source] |
[field:typename/] |
文章所属的栏目名称。 | [field:typename] |
高级用法:字段函数
默认的字段格式不能满足需求,我们可以使用函数来对字段进行格式化,语法为:[field:字段名 function="函数名('参数',@me)"/]
常用函数示例:
-
日期格式化 (
MyDate)- 默认的
[field:pubdate/]显示的是2025-10-27 10:30:00。 - 我们可以只显示日期:
[field:pubdate function="MyDate('Y-m-d',@me)"/],结果为2025-10-27。 - 显示
年月日 时分:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]。
- 默认的
-
截取字符串 (
cn_substr)
(图片来源网络,侵删)- 默认的
[field:title/]会显示完整标题,可能会破坏页面布局。 - 前20个字符:
[field:title function="cn_substr(@me,20)"/]。 - 截取摘要前100个字符:
[field:description function="cn_substr(@me,100)"/]。
- 默认的
-
去除HTML标签 (
htmlspecialchars)- 有时摘要里会带有
<p>等标签,我们不希望显示出来。 - 去除HTML标签后截取:
[field:description function="cn_substr(htmlspecialchars(@me),150)"/]。
- 有时摘要里会带有
-
数字格式化 (
number_format)- 将点击量格式化为
1,234的形式:[field:click function="number_format(@me)"/]。
- 将点击量格式化为
完整示例
假设我们要制作一个文章列表页,要求:
- 每页显示15篇文章。
- 按发布时间倒序排列,只显示30个字符。
- 显示缩略图、格式化后的日期和点击量。
list_article.htm 模板文件内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/}</title>
</head>
<body>
<h1>{dede:field.typename/}</h1>
<ul class="article-list">
{dede:list pagesize='15' orderby='pubdate' orderway='desc'}
<li>
<!-- 如果有缩略图则显示,否则显示默认图 -->
[field:litpic runphp='yes']
if(@me == '') @me = '/images/default.jpg';
else @me = @me;
[/field:litpic]
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
</a>
<div class="article-info">
<h2>
<a href="[field:arcurl/]">[field:title function="cn_substr(@me,30)"/]</a>
</h2>
<p class="meta">
发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]
点击:[field:click function="number_format(@me)"]次
</p>
<p class="summary">
[field:description function="cn_substr(htmlspecialchars(@me),100)"]...
</p>
</div>
</li>
{/dede:list}
</ul>
<!-- 分页标签 -->
<div class="page-nav">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
{/dede:pagelist}
</div>
</body>
</html>
重要注意事项
- 模板位置:
{dede:list}通常用在列表模板和首页模板中,你需要确保在后台“模板管理”中,为对应的栏目选择了正确的列表模板文件(如list_article.htm)。 - 与
{dede:arclist}的区别:{dede:list}:严格分页,它的核心功能就是配合分页标签{dede:pagelist}使用,它会在数据库层面进行LIMIT分页查询,性能较好,适用于标准的列表页。{dede:arclist}:更灵活,它主要用于首页、封面页等需要从多个栏目调用文章的场景,它也可以实现分页,但分页逻辑不如{dede:list}纯粹,通常需要配合pagesize属性使用。- 简单总结:做栏目列表页,优先用
{dede:list};做首页聚合调用,优先用{dede:arclist}。
- 性能:对于文章数量非常多的栏目,
{dede:list}的分页性能是可靠的,但如果列表本身显示的文章数量就非常多(pagesize=100),可以考虑开启DedeCMS的“arcpagelist”高级功能来进一步提升性能。
希望这份详细的指南能帮助你完全掌握 dede:list 的使用!
