{dede:list} 是用于在列表页(如首页、栏目页、搜索页等)循环输出文章列表的专用标签,掌握它,是进行织梦二次开发和模板制作的基础。

{dede:list} 的基本语法
{dede:list} 的基本结构是一个循环标签,它由起始标签、循环体内的内容(通常是文章标题、时间等)和结束标签组成。
{dede:list pagesize='10' titlelen='40'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
核心参数详解
{dede:list} 标签可以通过在起始标签内添加参数来控制列表的显示方式,这些参数是可选的,但最常用的是 pagesize。
pagesize - 每页显示的文章数量
这是最重要的参数,用于控制当前页面显示多少篇文章。
- 语法:
pagesize='数字' - 示例:
pagesize='10'表示每页显示10篇文章。 - 说明: 如果不设置此参数,织梦会使用后台“系统参数”中设置的“列表每页默认显示条数”。
titlelen - 标题长度
用于截取文章标题的显示长度,防止标题过长影响布局。

- 语法:
titlelen='数字' - 示例:
titlelen='40'表示标题只显示前40个字符(一个汉字算2个字符,一个英文/数字算1个字符)。 - 说明: 如果不设置,则显示完整标题。
infolen - 摘要长度
用于截取文章摘要(description字段)的显示长度。
- 语法:
infolen='数字' - 示例:
infolen='200'表示摘要只显示前200个字符。 - 说明: 如果文章没有填写摘要,则默认截取文章正文的前部分内容。
orderway - 排序方式
用于控制文章的排序顺序。
- 语法:
orderway='desc'或orderway='asc' - 值:
desc: 降序(默认),即从大到小,按发布时间排序,则最新的文章排在最前面。asc: 升序,即从小到大,按发布时间排序,则最早的文章排在最前面。
- 说明: 此参数的排序依据由
orderby参数决定。
orderby - 排序依据
用于指定文章按照哪个字段进行排序。
- 语法:
orderby='字段名' - 常用值:
sortrank: 默认值,按文章的排序级别(后台“自定义排序”设置)排序。id: 按文章ID排序。pubdate: 按文章发布时间排序。click: 按文章点击量排序。arcrank: 按文章权限级别排序。lastpost: 按最后评论时间排序。
- 说明:
orderby和orderway通常配合使用,orderby='pubdate' orderway='desc'表示按发布时间降序排列。
channelid - 指定频道ID
当你的列表页需要调用其他频道的文章时使用。

- 语法:
channelid='数字' - 示例:
channelid='1'表示调用文章频道(默认频道ID通常为1)。 - 说明: 这个参数在制作聚合页或调用特定模型内容时非常有用。
offset - 数据偏移量
用于从结果集中跳过前N篇文章,常用于实现“热门文章”、“最新文章”等分栏效果。
- 语法:
offset='数字' - 示例:
offset='5'表示从第6篇文章开始调用,跳过前5篇。 - 说明: 常与
pagesize配合,offset='5' pagesize='10'表示从第6篇文章开始,再取10篇。
常用字段变量详解
在 {dede:list} 循环体内,可以使用 [field:字段名/] 或 [field:字段名 function="自定义函数"/] 来调用文章的各种信息。
文章基本信息
| 字段名 | 说明 | 示例 |
| :--- | :--- | :--- | | 文章标题 | [field:title/] |
| arcurl | 文章链接 | [field:arcurl/] |
| pubdate | 发布时间(时间戳格式) | [field:pubdate/] |
| click | 点击次数 | [field:click/] |
| id | 文章ID | [field:id/] |
| typeid | 所属栏目ID | [field:typeid/] |
| description | | [field:description/] |
| writer | 作者 | [field:writer/] |
| source | 来源 | [field:source/] |
| litpic | 文章缩略图 | [field:litpic/] |
带函数处理的高级字段
很多时候,我们需要对原始数据进行格式化处理,这时就需要使用 function 属性。
时间格式化
-
原始数据:
[field:pubdate/]输出的是一串数字(如1703123456)。 -
格式化输出: 使用
MyDate函数。<!-- 格式:Y-m-d H:i:s --> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> <!-- 输出:2025-12-21 15:30:56 --> <!-- 格式:m-d --> <span>[field:pubdate function="MyDate('m-d',@me)"/]</span> <!-- 输出:12-21 -->
标题截取
- 原始数据:
[field:title/]是完整标题。 - 截取输出: 使用
cn_substr函数(titlelen参数本质上也是调用此函数)。<!-- 截取20个字符 --> <a href="[field:arcurl/]">[field:title function='cn_substr(@me, 20)'/]</a>
点击数格式化
- 原始数据:
[field:click/]是纯数字。 - 格式化输出: 可以自定义格式,如
阅读(xxx)。<span>阅读([field:click/])</span>
缩略图处理
- 存在缩略图时显示,不存在时不显示:
[field:litpic runphp='yes'] if(@me != '') { @me = '<img src="' . @me . '" alt="[field:title/]">'; } else { @me = '<img src="/images/default.jpg" alt="默认图片">'; } [/field:litpic]- 说明:
runphp='yes'表示开启PHP执行。@me代表当前字段的原始值。
- 说明:
完整示例
假设我们要制作一个常见的文章列表,包含标题、发布时间、摘要和缩略图,每页显示12篇,按发布时间倒序排列。
HTML 模板代码 (list_article.htm)
{dede:list pagesize='12' orderby='pubdate' orderway='desc'}
<div class="article-item">
<!-- 缩略图 -->
<div class="article-thumb">
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]">
</a>
</div>
<!-- 标题 -->
<h3 class="article-title">
<a href="[field:arcurl/]">[field:title/]</a>
</h3>
<!-- -->
<p class="article-summary">
[field:description function='cn_substr(@me, 120)'/]...
</p>
<!-- 元信息(时间、点击) -->
<div class="article-meta">
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
<span class="views">阅读([field:click/])</span>
</div>
</div>
{/dede:list}
<!-- 分页条 -->
<div class="pagination">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
{/dede:pagelist}
</div>
{dede:list} 与 {dede:arclist} 的区别
这两个标签功能相似,但应用场景和性能有区别。
| 特性 | {dede:list} |
{dede:arclist} |
|---|---|---|
| 应用场景 | 列表页专用,在栏目列表页、搜索页、专题页等需要自动分页的页面使用。 | 通用列表,可以在任何地方(包括首页、列表页、内容页)调用文章列表。 |
| 分页 | 自动处理,列表页会自动根据 pagesize 和总文章数生成分页链接。 |
不处理分页,它只负责输出当前需要的数据,分页需要手动实现或结合其他标签。 |
| 性能 | 更高,因为它专门为列表页优化,通常只调用必要的字段。 | 稍低,因为它更灵活,可以调用任意字段,默认可能会调用更多数据。 |
| 主要用途 | 制作标准的、可分页的栏目列表。 | 制作首页推荐、热门文章、相关文章、随机文章等小范围的列表。 |
简单总结:
- 要做栏目列表页,用
{dede:list}。 - 要在首页或其他地方调用几篇文章,用
{dede:arclist}。
常见问题与技巧
为什么我的列表页没有内容?
- 检查栏目是否设置了“使用列表模板”。
- 检查栏目是否选择了“列表”频道模型。
- 检查栏目下是否有已发布的文章。
- 检查文章是否被“仅动态”或“仅静态”等选项限制。
如何调用指定子栏目的文章?
- 在
{dede:list}标签外面包裹一个{dede:channel}标签,并设置typeid为父栏目ID。 - 在
{dede:list}中使用typeid='子栏目ID',如果子栏目很多,可以用逗号隔开,如typeid='5,6,7'。
如何实现列表页和内容页URL伪静态?
- 后台 -> 系统 -> 系统基本参数 -> 核心设置 -> “是否使用伪静态”:选择“是”。
- 根据你的服务器环境(Apache, Nginx, IIS)配置对应的伪静态规则文件(
.htaccess,nginx.conf等),织梦默认会提供规则文件,但需要上传到网站根目录并正确配置。
希望这份详解能帮助你彻底掌握织梦的 {dede:list}
