{dede:arclist} 是 DedeCMS 最核心、最常用的列表标签,用于在首页、列表页等地方调用文章列表,它可以灵活地控制调用的文章数量、排序方式、以及显示哪些字段。

(图片来源网络,侵删)
基本语法和常用属性
{dede:arclist} 标签的基本结构如下:
{dede:arclist
typeid=''
row='' len=''
orderby=''
keyword=''
channelid=''
limit=''
}
<a href='[field:arcurl/]'>[field:title/]</a>
<p>[field:info/]</p>
<p>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</p>
<p>作者:[field:writer/]</p>
<hr>
{/dede:arclist}
这个标签由三部分组成:
- 开始标签
{dede:arclist ...}: 定义调用的条件和参数。 - 循环体: 在
{dede:arclist}和{/dede:arclist}之间的内容,会根据row属性的值重复显示。 - **结束标签 `{/dede:arclist}``: 标签循环结束。
核心属性详解
| 属性名 | 说明 | 示例 |
|---|---|---|
| typeid | (最常用) 调用指定栏目ID下的文章,多个ID用英文逗号 隔开,如不指定,则调用所有栏目。 | typeid='1' (调用栏目ID为1下的文章)typeid='1,3,5' (调用栏目1,3,5下的文章) |
| row | (最常用) 调用文章的数量,即显示多少条。 | row='10' (显示10条文章) |
| infolen | (最常用) 内容摘要的长度,即截取文章摘要多少个字符。 | infolen='200' (摘要最多显示200个字符) |
| orderby | 文章的排序方式,常用值:pubdate(发布时间,默认)、click(点击量)、id(文章ID)、hot(热度)、rand(随机)。 |
orderby='click' (按点击量从高到低排序) |
| keyword | 调用包含指定关键词的文章。 | keyword='DedeCMS' (调用标题或内容中包含"DedeCMS"的文章) |
| channelid | 指定模型ID来调用文章,默认 channelid='1' 是普通文章。 |
channelid='1' (调用普通文章)channelid='2' (如果2是图集模型,则调用图集) |
| limit | 限制起始位置和数量,格式为 起始位置,数量,常用于分页。 |
limit='0,10' (从第0条开始,共10条,等同于row='10')limit='10,10' (从第10条开始,共10条,用于第二页) |
| flag | 调用指定属性的文章。c代表推荐,h代表头条,p代表图片,可以组合使用。 |
flag='c' (只调用推荐文章)flag='ch' (调用既是推荐又是头条的文章) |
如何调用文章内容(
主要使用 infolen 属性来控制摘要长度,并在循环体内使用 [field:info/] 标签来输出。
调用默认摘要(文章摘要字段)
这是最常见的方式,DedeCMS 在后台发布文章时,有一个“的输入框。[field:info/] 默认调用的是这个字段的内容。

(图片来源网络,侵删)
示例:调用栏目ID为1的5篇文章,标题30字,摘要200字
<h2>最新文章列表</h2>
<ul>
{dede:arclist typeid='1' row='5' titlelen='30' infolen='200'}
<li>
<a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a>
<p>[field:info/]...</p>
</li>
{/dede:arclist}
</ul>
代码解释:
{dede:arclist typeid='1' row='5' titlelen='30' infolen='200'}: 调用栏目1的5篇文章,标题限制30字符,摘要限制200字符。[field:arcurl/]: 调用文章的完整链接。[field:title/]:调用文章标题。[field:info/]: 调用文章摘要。
调用文章正文的前N个字符
如果你没有填写文章摘要,或者想直接从文章正文中截取一部分作为摘要,可以使用 function='html2text(@me)' 函数,这个函数可以将HTML格式的文章内容转换为纯文本,然后再截取。
示例:从文章正文中截取前150个字符作为摘要

(图片来源网络,侵删)
<h2>文章内容摘要</h2>
<ul>
{dede:arclist typeid='3' row='8'}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
<p>[field:body function='html2text(@me)'/]</p>
</li>
{/dede:arclist}
</ul>
代码解释:
[field:body function='html2text(@me)'/]:[field:body]: 获取文章的正文内容(包含HTML标签)。function='html2text(@me)': 对获取到的正文内容执行html2text函数,将其中的HTML标签(如<p>,<img>)去除,只保留纯文本。- 注意:这种方式会调用整个文章正文,如果文章很长,可能会影响页面加载速度。最佳实践是先填写摘要。
完整示例
下面是一个完整的首页文章列表调用示例,包含了标题、发布时间和作者。
<div class="news-list">
<h2>网站动态</h2>
{dede:arclist
typeid='1'
row='6'
titlelen='40'
infolen='150'
orderby='pubdate'
flag='c'
}
<div class="news-item">
<h3><a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a></h3>
<div class="news-summary">
[field:info/]
</div>
<div class="news-info">
<span>发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]</span>
<span>作者:[field:writer/]</span>
<span>浏览:[field:click/]</span>
</div>
</div>
{/dede:arclist}
</div>
代码解释:
flag='c': 只调用带有“推荐”属性的文章。[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]: 对发布时间进行格式化,显示为年-月-日 时:分。[field:click/]:调用文章的点击次数。[field:writer/]:调用文章的作者。
常见问题与解决方案
-
为什么
[field:info/]显示为空?- 原因:因为你在后台发布文章时,没有填写“字段。
- 解决方案:
a. 推荐:回到后台编辑文章,填写摘要字段。
b. 备选:使用
[field:body function='html2text(@me)'/]从正文中截取,但要注意性能。
-
摘要截断后想显示“阅读更多”怎么办?
- 你可以在
[field:info/]后面手动添加一个链接。
<p>[field:info/]... <a href="[field:arcurl/]" target="_blank">[阅读更多]</a></p>
- 你可以在
-
如何调用子栏目(包括所有下级栏目)的文章?
- DedeCMS 默认不支持直接调用子栏目的ID,你需要使用
{dede:channel}标签先获取所有子栏目的ID,然后再用{dede:arclist}调用,或者使用更高级的SQL标签{dede:sql}。
方法一(推荐):使用sonclass标签
{dede:arclist}有一个sonclass属性,如果设置为1,则会调用当前栏目及其所有下级栏目的文章。{dede:arclist typeid='1' row='10' sonclass='1'} <!-- 循环内容 --> {/dede:arclist}这个
typeid='1'是父栏目的ID。 - DedeCMS 默认不支持直接调用子栏目的ID,你需要使用
希望这份详细的指南能帮助你完全掌握 dede:arclist 的使用!
