核心概念:频道页与 list
-
频道页:
(图片来源网络,侵删)
- 这是指一个栏目(频道)的列表页面,你的网站有一个“公司新闻”栏目,那么访问这个栏目的链接(如
http://yourdomain.com/plus/list.php?tid=5)就是频道页。
- 这个页面的主要作用就是展示该栏目下的所有文章(或子栏目)的标题、发布时间等信息,形成列表。
- 模板文件通常存放在
/templets/你的模板目录/ 目录下,文件名与栏目英文名或ID相关,list_article.htm。
-
list:
- 这是DedeCMS中专门用于在列表页调用文章列表的底层标签。
- 它会根据当前页面的栏目ID(
tid),自动从数据库中查询属于该栏目的所有文章,并进行分页处理。
list 标签内部必须嵌套一个循环标签,通常是 [field:函数],用于对每一条获取到的文章进行格式化输出。
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 ...}: 开始标签,用于定义列表查询的参数。
[field:xxx/]: 这是字段调用标签,用于在循环中输出当前文章的特定信息,它必须被 {dede:list} 包裹。
[field:title/]: 文章标题。
[field:arcurl/]: 文章的完整链接地址。
[field:pubdate/]: 文章发布时间(时间戳格式)。
[field:description/]:
[field:litpic/]: 文章缩略图。
[field:click/]: 文章点击数。
- ...等等。
{/dede:list}: 结束标签,标志着列表循环的结束。
list 标签的常用属性
你可以在 {dede:list} 标签中添加属性来控制列表的显示方式。
属性名
说明
示例
pagesize
每页显示的文章数量,这是最重要的属性。
pagesize='10' (每页显示10篇文章)
infolen
摘要长度(截取字符数)。
infolen='120' (摘要最多显示120个字符)
orderway
排序方式。desc 为降序(默认,最新的在前),asc 为升序(最旧的在前)。
orderway='asc'
keyword
关键词,用于只显示包含特定关键词的文章。
keyword='织梦'
limit
起始位置,显示数量。limit='0,10' 表示从第0条开始,显示10条,等同于 pagesize='10'。limit='10,10' 表示从第10条开始,显示10条(用于分页)。
limit='0,5'
综合示例:
调用“公司新闻”栏目下的文章,每页显示8条,标题长度限制在40个字符,按发布时间降序排列。
(图片来源网络,侵删)
{dede:list pagesize='8' titlelen='40' orderway='desc'}
<div class="news-item">
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<p class="news-info">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</p>
<p class="news-summary">[field:description function="cn_substr(@me, 100)"]...</p>
</div>
{/dede:list}
完整的频道页模板示例
一个功能完整的频道页(list_article.htm)通常包含三个部分:
- 页面头部:
{dede:include filename="head.htm" /}
- 栏目信息:显示当前栏目的名称和描述。
- 文章列表:使用
{dede:list} 标签调用。
- 分页条:
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno' /}
- 页面底部:
{dede:include filename="footer.htm" /}
下面是一个完整的、常见的频道页模板代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
<meta name="keywords" content="{dede:field.keywords/}" />
<link rel="stylesheet" href="/templets/default/style.css">
</head>
<body>
<!-- 头部 -->
{dede:include filename="head.htm" /}
<!-- 主体内容区 -->
<div class="main-container">
<div class="page-title">
<h1>{dede:field.title/}</h1>
<p>{dede:field.description/}</p>
</div>
<!-- 文章列表开始 -->
<div class="article-list">
{dede:list pagesize='10' titlelen='50' infolen='200'}
<article class="post-item">
<h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
<div class="post-meta">
<span>发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"]</span>
<span>作者:[field:writer/]</span>
<span>浏览:[field:click/]</span>
</div>
<div class="post-content">
<p>[field:description/]</p>
<a href="[field:arcurl/]" class="read-more">阅读全文 →</a>
</div>
</article>
{/dede:list}
</div>
<!-- 文章列表结束 -->
<!-- 分页条开始 -->
<div class="pagination">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>
<!-- 分页条结束 -->
</div>
<!-- 底部 -->
{dede:include filename="footer.htm" /}
</body>
</html>
常见问题与解决方法
问题1:为什么我的频道页调用不到文章?
- 原因1:栏目没有绑定模板。
- 解决:进入DedeCMS后台 -> 【核心】-> 【频道管理】-> 点击你的栏目 -> 在右侧“列表选项”中,为“列表模板”选择一个正确的模板文件(如
list_article.htm)。
- 原因2:栏目类型错误。
- 解决:检查栏目的“栏目类型”,如果类型是“外部链接”,则它没有内容列表,无法调用,请将其改为“栏目首页”。
- 原因3:文章没有审核或未归档到正确栏目。
- 解决:确保文章已通过审核,并且在“选择栏目”时,正确地选择了你要显示的栏目。
问题2:list 标签和 arclist 标签有什么区别?
这是新手最容易混淆的地方。
特性
{dede:list}
{dede:arclist}
使用场景
频道页 (plus/list.php)
首页、封面页 等非列表页面
数据来源
只调用当前栏目 (tid) 的文章。
可以跨栏目调用文章,支持 typeid、channelid 等属性来指定来源。
分页
自动处理分页,无需手动写分页代码。
不处理分页,如果需要分页,需要自己配合 php 代码或 GetPageList 标签来实现,比较复杂。
性能
在列表页中,性能更优,因为它直接服务于当前栏目。
灵活性高,但用在列表页时,如果调用数据量大,可能会有性能问题。
简单记:
(图片来源网络,侵删)
- 在列表页,用
{dede:list}。
- 在首页、其他频道页、文章页等地方需要调用文章列表时,用
{dede:arclist}。
进阶技巧:结合 channel 和 list 实现带子栏目的列表页
我们希望在频道页同时显示“子栏目”和“子栏目下的文章”,这时需要结合 {dede:channel} 和 {dede:list}
<!-- 遍历当前栏目下的所有一级子栏目 -->
{dede:channel type='son' currentstyle=''}
<div class="sub-channel">
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<!-- 调用当前子栏目下的文章列表 -->
{dede:list pagesize='5'}
<dl>
<dt><a href="[field:arcurl/]">[field:title/]</a></dt>
<dd>[field:pubdate function="MyDate('Y-m-d',@me)"]</dd>
</dl>
{/dede:list}
<a href="[field:typelink/]" class="more">查看更多 →</a>
</div>
{/dede:channel}
代码解释:
{dede:channel type='son'}: 获取当前栏目的所有子栏目。
[field:typelink/]: 子栏目的链接地址。
{dede:list ...}: 在 {dede:channel} 的循环内部,{dede:list} 会自动切换为调用当前子栏目的文章列表。
希望这份详细的指南能帮助你完全掌握在DedeCMS频道页使用 list
-
频道页:
(图片来源网络,侵删)- 这是指一个栏目(频道)的列表页面,你的网站有一个“公司新闻”栏目,那么访问这个栏目的链接(如
http://yourdomain.com/plus/list.php?tid=5)就是频道页。 - 这个页面的主要作用就是展示该栏目下的所有文章(或子栏目)的标题、发布时间等信息,形成列表。
- 模板文件通常存放在
/templets/你的模板目录/目录下,文件名与栏目英文名或ID相关,list_article.htm。
- 这是指一个栏目(频道)的列表页面,你的网站有一个“公司新闻”栏目,那么访问这个栏目的链接(如
-
list:- 这是DedeCMS中专门用于在列表页调用文章列表的底层标签。
- 它会根据当前页面的栏目ID(
tid),自动从数据库中查询属于该栏目的所有文章,并进行分页处理。 list标签内部必须嵌套一个循环标签,通常是[field:函数],用于对每一条获取到的文章进行格式化输出。
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 ...}: 开始标签,用于定义列表查询的参数。[field:xxx/]: 这是字段调用标签,用于在循环中输出当前文章的特定信息,它必须被{dede:list}包裹。[field:title/]: 文章标题。[field:arcurl/]: 文章的完整链接地址。[field:pubdate/]: 文章发布时间(时间戳格式)。[field:description/]:[field:litpic/]: 文章缩略图。[field:click/]: 文章点击数。- ...等等。
{/dede:list}: 结束标签,标志着列表循环的结束。
list 标签的常用属性
你可以在 {dede:list} 标签中添加属性来控制列表的显示方式。
| 属性名 | 说明 | 示例 |
|---|---|---|
pagesize |
每页显示的文章数量,这是最重要的属性。 | pagesize='10' (每页显示10篇文章) |
infolen |
摘要长度(截取字符数)。 | infolen='120' (摘要最多显示120个字符) |
orderway |
排序方式。desc 为降序(默认,最新的在前),asc 为升序(最旧的在前)。 |
orderway='asc' |
keyword |
关键词,用于只显示包含特定关键词的文章。 | keyword='织梦' |
limit |
起始位置,显示数量。limit='0,10' 表示从第0条开始,显示10条,等同于 pagesize='10'。limit='10,10' 表示从第10条开始,显示10条(用于分页)。 |
limit='0,5' |
综合示例: 调用“公司新闻”栏目下的文章,每页显示8条,标题长度限制在40个字符,按发布时间降序排列。

{dede:list pagesize='8' titlelen='40' orderway='desc'}
<div class="news-item">
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<p class="news-info">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</p>
<p class="news-summary">[field:description function="cn_substr(@me, 100)"]...</p>
</div>
{/dede:list}
完整的频道页模板示例
一个功能完整的频道页(list_article.htm)通常包含三个部分:
- 页面头部:
{dede:include filename="head.htm" /} - 栏目信息:显示当前栏目的名称和描述。
- 文章列表:使用
{dede:list}标签调用。 - 分页条:
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno' /} - 页面底部:
{dede:include filename="footer.htm" /}
下面是一个完整的、常见的频道页模板代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
<meta name="keywords" content="{dede:field.keywords/}" />
<link rel="stylesheet" href="/templets/default/style.css">
</head>
<body>
<!-- 头部 -->
{dede:include filename="head.htm" /}
<!-- 主体内容区 -->
<div class="main-container">
<div class="page-title">
<h1>{dede:field.title/}</h1>
<p>{dede:field.description/}</p>
</div>
<!-- 文章列表开始 -->
<div class="article-list">
{dede:list pagesize='10' titlelen='50' infolen='200'}
<article class="post-item">
<h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
<div class="post-meta">
<span>发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"]</span>
<span>作者:[field:writer/]</span>
<span>浏览:[field:click/]</span>
</div>
<div class="post-content">
<p>[field:description/]</p>
<a href="[field:arcurl/]" class="read-more">阅读全文 →</a>
</div>
</article>
{/dede:list}
</div>
<!-- 文章列表结束 -->
<!-- 分页条开始 -->
<div class="pagination">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>
<!-- 分页条结束 -->
</div>
<!-- 底部 -->
{dede:include filename="footer.htm" /}
</body>
</html>
常见问题与解决方法
问题1:为什么我的频道页调用不到文章?
- 原因1:栏目没有绑定模板。
- 解决:进入DedeCMS后台 -> 【核心】-> 【频道管理】-> 点击你的栏目 -> 在右侧“列表选项”中,为“列表模板”选择一个正确的模板文件(如
list_article.htm)。
- 解决:进入DedeCMS后台 -> 【核心】-> 【频道管理】-> 点击你的栏目 -> 在右侧“列表选项”中,为“列表模板”选择一个正确的模板文件(如
- 原因2:栏目类型错误。
- 解决:检查栏目的“栏目类型”,如果类型是“外部链接”,则它没有内容列表,无法调用,请将其改为“栏目首页”。
- 原因3:文章没有审核或未归档到正确栏目。
- 解决:确保文章已通过审核,并且在“选择栏目”时,正确地选择了你要显示的栏目。
问题2:list 标签和 arclist 标签有什么区别?
这是新手最容易混淆的地方。
| 特性 | {dede:list} |
{dede:arclist} |
|---|---|---|
| 使用场景 | 频道页 (plus/list.php) |
首页、封面页 等非列表页面 |
| 数据来源 | 只调用当前栏目 (tid) 的文章。 |
可以跨栏目调用文章,支持 typeid、channelid 等属性来指定来源。 |
| 分页 | 自动处理分页,无需手动写分页代码。 | 不处理分页,如果需要分页,需要自己配合 php 代码或 GetPageList 标签来实现,比较复杂。 |
| 性能 | 在列表页中,性能更优,因为它直接服务于当前栏目。 | 灵活性高,但用在列表页时,如果调用数据量大,可能会有性能问题。 |
简单记:

- 在列表页,用
{dede:list}。 - 在首页、其他频道页、文章页等地方需要调用文章列表时,用
{dede:arclist}。
进阶技巧:结合 channel 和 list 实现带子栏目的列表页
我们希望在频道页同时显示“子栏目”和“子栏目下的文章”,这时需要结合 代码解释: 希望这份详细的指南能帮助你完全掌握在DedeCMS频道页使用 {dede:channel} 和 {dede:list}
<!-- 遍历当前栏目下的所有一级子栏目 -->
{dede:channel type='son' currentstyle=''}
<div class="sub-channel">
<h2><a href="[field:typelink/]">[field:typename/]</a></h2>
<!-- 调用当前子栏目下的文章列表 -->
{dede:list pagesize='5'}
<dl>
<dt><a href="[field:arcurl/]">[field:title/]</a></dt>
<dd>[field:pubdate function="MyDate('Y-m-d',@me)"]</dd>
</dl>
{/dede:list}
<a href="[field:typelink/]" class="more">查看更多 →</a>
</div>
{/dede:channel}
{dede:channel type='son'}: 获取当前栏目的所有子栏目。[field:typelink/]: 子栏目的链接地址。{dede:list ...}: 在 {dede:channel} 的循环内部,{dede:list} 会自动切换为调用当前子栏目的文章列表。list
