下面我将从基础到进阶,全面讲解 list 标签的用法。

(图片来源网络,侵删)
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}: 开始标签,用于定义一个列表循环。pagesize='10': 这是list标签的一个常用属性,表示每页显示 10 条记录。[field:xxx/]: 这是字段调用标签,用于在循环中输出文章的特定信息,如标题、链接、日期等,它必须放在{dede:list}和{/dede:list}之间。{/dede:list}: 结束标签,表示循环结束。
核心属性
list 标签通过属性来控制输出的内容,以下是最重要的几个属性:
| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,这是最常用的属性,用于调用指定栏目下的文章,如果省略,则默认调用当前栏目下的文章。 | {dede:list typeid='3' pagesize='15'} |
pagesize |
每页显示条数,设置列表页一页要显示多少篇文章。 | {dede:list pagesize='20'} |
infolen |
内容简介长度,截取文章摘要(description)显示的字符数。 | {dede:list infolen='100'} |
orderway |
排序方式。desc 表示降序(默认,最新的在前),asc 表示升序(最旧的在前)。 |
{dede:list orderway='asc'} |
subday |
调用指定天数内发布的文章。subday='30' 表示调用最近30天内发布的文章。 |
{dede:list subday='7'} |
channelid |
指定模型ID,默认为1(文章模型),可以用于调用其他模型(如图集、软件等)的内容。 | {dede:list channelid='2'} |
常用字段调用
在 {dede:list} 循环内部,可以使用 [field:xxx/] 来调用文章的各种信息。

(图片来源网络,侵删)
| 字段名 | 说明 | 示例代码 |
|---|---|---|
[field:title/] |
(可截断) | [field:title/] 或 [field:title function='cn_substr(@me, 20)'/] |
[field:arcurl/] |
文章链接 | <a href="[field:arcurl/]">[field:title/]</a> |
[field:pubdate/] |
发布日期(时间戳格式) | [field:pubdate] (输出如:20250815) |
[field:writer/] |
作者 | [field:writer/] |
[field:source/] |
来源 | [field:source/] |
[field:click/] |
点击次数 | [field:click/] |
[field:litpic/] |
文章缩略图 | <img src="[field:litpic/]" alt="[field:title/]"> |
[field:description/] |
description) | [field:description/] 或 [field:description function='cn_substr(@me, 100)'/] |
高级字段调用(使用 function 函数):
-
格式化日期:这是最常用的技巧,将时间戳转换为易读的日期格式。
[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]'Y-m-d H:i'是日期格式,Y代表4位年份,m代表月份,d代表日,H代表24小时制小时,i代表分钟。@me代表当前字段的原始值(这里是时间戳)。
-
截取字符串或摘要过长影响布局。
[field:title function="cn_substr(@me, 40)"/]
综合实例
假设我们要做一个“网站技术”栏目(栏目ID为5)的列表页,要求:

(图片来源网络,侵删)
- 每页显示 12 条文章,最多显示 30 个字符。
- 显示文章摘要,最多 100 个字符。
- 发布日期格式为
2025-08-15。 - 如果有缩略图,则显示缩略图,否则显示一张默认图片。
list_article.htm 模板文件代码示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">网站技术文章列表</title>
</head>
<body>
<h1>网站技术文章列表</h1>
<ul class="article-list">
{dede:list typeid='5' pagesize='12' titlelen='30' infolen='100'}
<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/]</a></h2>
<p class="summary">[field:description function="cn_substr(@me, 100)"]...</p>
<div class="meta">
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
<span class="click">阅读:[field:click/]</span>
</div>
</div>
</li>
{/dede:list}
</ul>
<!-- 分页标签 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
</body>
</html>
进阶技巧与注意事项
-
{dede:arclist}与{dede:list}的区别{dede:list}: 专门用于列表页,它有一个分页过程,会根据当前是第几页来从数据库中读取对应范围的数据,它的效率更高,因为它只读取当前页的数据。{dede:arclist}: 功能更强大的列表标签,可以在任何地方使用(包括首页、列表页、内容页),它一次性读取所有数据,然后在模板中进行循环分页,所以当数据量很大时(比如首页调用全站最新文章),可能会比较慢。
简单总结:
- 列表页,用
{dede:list}。 - 页,或者需要更灵活调用时,用
{dede:arclist}。
-
如何调用子栏目的内容?
list标签的typeid属性本身不支持直接调用子栏目,但你可以通过以下方式实现:- 方法一(推荐): 在后台栏目设置中,勾选“栏目属性”为“外部链接”,链接地址指向该子栏目的列表页URL,这样,点击父栏目时就会跳转到子栏目的列表页。
- 使用
{dede:channel}标签先获取所有子栏目的ID,然后用逗号拼接起来,赋值给list标签的typeid属性。{dede:channel type='son' typeid='父栏目ID'} [field:id/], {/dede:channel}这种方法需要配合PHP逻辑来实现,比较复杂,不常用。
-
性能优化
- 尽量在
list标签中使用typeid属性,明确指定数据来源,避免全站数据扫描。 pagesize设置一个合理的值,不要过大。- 避免在循环中使用过于复杂的
function函数。
- 尽量在
希望这份详细的指南能帮助你完全掌握 DedeCMS 的 list 标签调用!
