list 标签的基本语法
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 ...}: 这是循环的开始,可以包含各种属性来控制列表的行为。- 循环体内的代码,会为每篇文章重复执行。
{/dede:list}: 这是循环的结束。
list 标签的常用属性
list 标签的功能非常强大,主要通过其属性来实现。
pagesize
- 作用: 设置每页显示的文章数量。
- 示例:
pagesize='20'表示每页显示20篇文章。 - 说明: 这个属性与分页标签
{dede:pagelist/}紧密配合,是实现分页功能的基础。
col
- 作用: 设置列表每行显示的列数(主要用于表格布局或
dl/dt布局)。 - 示例:
col='2'表示每行显示2列。 - 说明: 当使用
col属性时,Dede 会自动在循环体内生成一个带有dede:list和dede:pagebreak的结构,用于控制换行,在现代前端开发中,更推荐使用 CSS 的 Flexbox 或 Grid 布局来实现多列,而不是依赖此属性。
titlelen
- 作用: 设置文章标题的显示长度(字符数)。
- 示例:
titlelen='30'表示标题最多显示30个字符,超出部分会被截断。 - 说明: 如果标题被截断,Dede 默认会添加 ,你也可以使用自定义函数来控制截断后的显示效果。
infolen
- 作用: 设置文章摘要(
description)的显示长度。 - 示例:
infolen='100'表示摘要最多显示100个字符。 - 说明: 这个字段依赖于文章在后台填写时是否填写了摘要,如果未填写,则可能为空。
orderway
- 作用: 设置文章的排序方式。
- 可选值:
desc: 降序(默认,如按发布时间从新到旧)。asc: 升序(如按发布时间从旧到新)。
- 示例:
orderway='asc'。
orderby
- 作用: 设置文章排序的字段。
- 常用值:
sortrank: 按自定义排序(后台设置,默认值)。pubdate: 按发布时间排序。senddate: 按录入时间排序。hot或click: 按点击量排序。lastpost: 按最后评论时间排序。scores: 按评分排序。
- 示例:
orderby='click' orderway='desc'表示按点击量从高到低排序。
channel
- 作用: 指定列表显示的频道ID。
- 示例:
channel='1'表示只显示内容模型ID为1(文章模型)的内容。 - 说明: 在多站点或复杂模型网站中非常有用。
typeid
- 作用: 指定列表显示的栏目ID。
- 示例:
typeid='5'表示只显示栏目ID为5下的文章。 - 说明: 在列表页模板(
list_*.htm)中,通常不需要手动设置此属性,Dede 会自动获取当前栏目ID,但在特定场景下(如调用其他栏目列表),可以手动指定。
subday
- 作用: 只显示指定天数内发布的文章。
- 示例:
subday='7'表示只显示最近7天内发布的文章。 - 说明: 常用于制作“最新文章”或“本周热点”等模块。
keyword
- 作用: 只显示标题包含指定关键词的文章。
- 示例:
keyword='织梦,DedeCMS'。 - 说明: 多个关键词用逗号隔开,表示“或”的关系。
list 标签中的常用字段(Field)
在 {dede:list} 循环体内,可以使用 [field:字段名/] 来调用文章的各种信息。
| 字段名 | 说明 | 示例 |
| :--- | :--- | :--- | | 文章标题 | [field:title/] |
| arcurl | 文章的完整链接 | [field:arcurl/] |
| litpic | 文章的缩略图(如果有) | <img src='[field:litpic/]' /> |
| description | | [field:description/] |
| pubdate | 文章发布的时间戳(Unix时间戳) | [field:pubdate/] |
| click | 文章的点击量 | [field:click/] |
| id | 文章的ID | [field:id/] |
| typeurl | 当前栏目的链接 | [field:typeurl/] |
| typename | 当前栏目的名称 | [field:typename/] |
字段格式化处理(使用 function)
很多字段(尤其是日期)需要格式化处理,这时可以使用 function 属性。

日期格式化:
[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]
MyDate: Dede 的日期处理函数。'Y-m-d H:i': 目标格式,Y代表4位年份,m代表月份,d代表日,H代表24小时制小时,i代表分钟。@me: 代表当前字段的原始值(这里是时间戳)。 截断**:[field:title function='cn_substr(@me, 30)'/]
cn_substr: Dede 的中文字符串截断函数,可以正确处理中文字符,避免乱码。30: 截取30个字符。
调用缩略图,如果没图则显示默认图:
<img src="[field:litpic/]" onerror="this.src='/images/default.jpg'" />
onerror: 这是一段JavaScript,当图片加载失败时,会自动替换为默认图片路径。
list 标签与分页标签的结合使用
一个完整的列表页,必然包含 list 标签和分页标签。
列表页模板 (list_article.htm) 示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<ul class="article-list">
{dede:list pagesize='10' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me, 40)'/]</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
<div class="summary">[field:description function='cn_substr(@me, 150)'/]...</div>
</li>
{/dede:list}
</ul>
<!-- 分页条 -->
<div class="page">
<ul>
{dede:pagelist listsize='5' listitem='pre,next,pageno'}
</ul>
</div>
</body>
</html>
{dede:pagelist/}: 负责生成分页链接。listsize='5': 显示5个页码按钮。listitem='pre,next,pageno': 指定显示的分页项目,包括“上一页”、“下一页”和页码。
高级用法与注意事项
自定义列表查询
orderby 和 typeid 等属性无法满足复杂的查询需求,可以使用 sql 属性直接执行 SQL 语句。
示例: 调用指定分类下、标题包含“教程”且点击量大于100的文章。
{dede:list sql="SELECT * FROM `dede_archives` WHERE typeid IN (5,6,7) AND title LIKE '%教程%' AND click > 100 ORDER BY pubdate DESC" pagesize='15'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:list}
⚠️ 警告: 直接使用 sql 有一定的安全风险,请务必对用户输入进行过滤,并确保你的 dede_archives 表结构是正确的,新手不建议轻易使用。
与 arclist 标签的区别
list: 用于列表页,自带分页功能,必须与{dede:pagelist/}配合使用,它基于当前栏目ID进行查询。arclist: 用于任意页面(首页、栏目页等)调用文章列表,本身不带分页功能,功能更灵活,常用于首页推荐、热门文章等。
缓存问题
Dede 是一个基于缓存的系统,如果你修改了列表页模板,但前台页面没有更新,请记得在后台“生成” -> “更新HTML” -> “更新栏目HTML” 或 “更新指定栏目HTML”。
dede:list 是 Dedecms 列表页的基石,掌握它的属性(控制排序、数量、筛选等)和字段(调用文章内容),并结合分页标签,就能构建出功能完善的列表页面,对于初学者,建议先从 pagesize, orderby, titlelen 等常用属性入手,逐步熟悉后再探索更高级的用法。
