arclist 标签,顾名思义,是“文章列表”的缩写,它的主要功能是从数据库中提取符合条件的文章、图集等文档,并以列表的形式展示在页面上,它是 DedeCMS 中使用频率最高的标签之一,几乎无处不在,比如首页、列表页、频道页等。

(图片来源网络,侵删)
arclist 标签的基本语法
arclist 标签的基本结构非常简单,由属性和标签体组成。
{dede:arclist 属性='值' 属性='值' ...}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:arclist}
{dede:arclist ...}: 标签的开始,所有的属性都在这里定义。{/dede:arclist}: 标签的结束。- 标签体: 开始和结束标签之间的 HTML 代码和内部标签(如
[field:title/]),这部分是用来定义列表项的显示样式的。
核心属性详解
arclist 的强大之处在于其丰富的属性,通过组合这些属性,可以实现各种复杂的需求。
基础筛选属性
| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,获取特定栏目下的文章,多个ID用逗号 隔开。 | typeid='1,3,5' |
row |
获取记录数,即显示多少条文章。 | row='10' |
col |
分列显示,将列表项分几列显示,通常配合 tablewidth 使用。 |
col='2' |
infolen |
摘要长度,截取文章摘要(如 description)的字符数。 |
infolen='120' |
orderby |
排序方式,按什么字段排序,常用值:pubdate (发布时间)、click (点击量)、id (文章ID)、sortrank (权重)。 |
orderby='pubdate' |
orderway |
排序顺序,配合 orderby 使用。desc 为降序(默认),asc 为升序。 |
orderway='desc' |
示例:获取栏目ID为1下的最新10篇文章,标题显示30个字符。
{dede:arclist typeid='1' row='10' titlelen='30' orderby='pubdate'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
高级筛选属性
| 属性名 | 说明 | 示例 |
|---|---|---|
idlist |
指定文章ID列表,直接获取指定ID的文章,会忽略 typeid,多个ID用逗号隔开。 |
idlist='100,101,102' |
channelid |
指定模型ID,用于获取不同频道(如文章、图集、软件)的内容,默认为1(文章模型)。 | channelid='2' (获取图集) |
limit |
记录范围,格式为 起始位置,记录数。limit='0,5' 表示从第0条开始,取5条。 |
limit='5,10' (显示第6到15条) |
flag |
特定属性文章,获取带有特定属性的文章。h (头条)、c (推荐)、p (图片)、f (幻灯),多个用 隔开。 |
flag='h,c' (获取头条和推荐文章) |
noflag |
排除特定属性文章,与 flag 相反。 |
noflag='h' (获取非头条文章) |
subday |
指定天数内,获取指定天数内发布的文章。subday='30' 表示获取30天内发布的文章。 |
subday='7' (获取一周内发布的文章) |
keyword |
关键字搜索或关键词包含指定字符串的文章。 | keyword='DedeCMS' |
att |
特定附件,获取带有附件的文章。 | att='1' (有附件) |
示例:获取栏目ID为2下的所有头条文章。

(图片来源网络,侵删)
{dede:arclist typeid='2' flag='h' row='5'}
<div class="headline">
<a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" /></a>
<a href="[field:arcurl/]">[field:title/]</a>
</div>
{/dede:arclist}
样式与输出控制属性
| 属性名 | 说明 | 示例 |
|---|---|---|
template |
指定列表模板,可以调用一个外部模板文件来渲染列表,而不是直接在当前位置写HTML。 | template='list_special.htm' |
innertext |
,这个属性会覆盖标签体内的所有内容,它定义了每个列表项的HTML结构。 | innertext='<li><a href="[field:arcurl/]">[field:title/]</a></li>' |
aidlist |
同 idlist,idlist 是更标准的写法。 |
aidlist='100,101' |
channel |
同 channelid,channelid 是更标准的写法。 |
channel='1' |
listtype |
列表类型,list (默认,普通列表)、commend (推荐列表)。 |
listtype='commend' |
ismember |
会员权限,0 (所有)、1 (仅会员)、-1 (仅非会员)。 |
ismember='1' |
内部字段(循环体内的变量)
在 {dede:arclist} 和 {/dede:arclist} 之间,可以使用 [field:xxx/] 来调用当前文章的各个字段信息。
| 字段名 | 说明 | 示例 |
|---|---|---|
[field:title/] |
[field:title/] |
|
[field:arcurl/] |
文章链接 | <a href="[field:arcurl/]"> |
[field:pubdate/] |
发布时间(时间戳格式) | [field:pubdate function="MyDate('Y-m-d',@me)"/] |
[field:description/] |
文章摘要 | [field:description/] |
[field:picname/] |
文章首图(如果有) | <img src="[field:picname/]" /> |
[field:click/] |
文章点击量 | [field:click/] |
[field:id/] |
文章ID | [field:id/] |
[field:typename/] |
文章所在栏目名称 | [field:typename/] |
[field:typeurl/] |
文章所在栏目链接 | [field:typeurl/] |
[field:litpic/] |
同 [field:picname/],缩略图 |
[field:litpic/] |
[field:shorttitle/] |
[field:shorttitle/] |
function 修饰符:
function 用于对字段值进行二次处理,最常用的就是日期格式化。
MyDate('Y-m-d', @me) 的含义是:
MyDate: DedeCMS 的一个内置函数。'Y-m-d': 日期格式,Y代表四位年份,m代表月份,d代表日期。@me: 代表当前字段的原始值(这里是时间戳)。
常用实例
实例1:首页最新文章列表
<div class="news-list">
<h3>最新文章</h3>
<ul>
{dede:arclist row='8' titlelen='40' orderby='pubdate'}
<li>
<span class="date">[field:pubdate function="MyDate('m-d',@me)"/]</span>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
</div>
实例2:带缩略图的图文列表
<div class="pic-list">
{dede:arclist row='4' titlelen='20' orderby='pubdate' imgwidth='150' imgheight='100'}
<div class="pic-item">
<a href="[field:arcurl/]">
<img src="[field:picname/]" alt="[field:title/]" width="150" height="100" />
<span>[field:title/]</span>
</a>
</div>
{/dede:arclist}
</div>
注意:
imgwidth和imgheight属性需要配合 DedeCMS 的自动缩略图功能使用,并且文章需要有图片。
实例3:调用指定子栏目的文章
假设当前栏目ID是 5,要调用其所有一级子栏目下的文章。
{dede:arclist typeid='sonof5' row='10' titlelen='30'}
...
{/dede:arclist}
typeid='sonof5' 这种写法是动态获取ID为5的子栏目,更推荐的方式是直接在后台获取到子栏目的ID,然后写死,如 typeid='6,7,8'。
与 list 标签的区别
初学者经常混淆 arclist 和 list 标签,这里简单区分一下:
| 特性 | arclist (文章列表) |
list (列表页) |
|---|---|---|
| 使用位置 | 任意位置,如首页、栏目页、文章页等。 | 仅在列表页模板 (list_*.htm) 中使用。 |
| 数据范围 | 灵活指定,可以通过 typeid, idlist 等指定任意栏目或文章。 |
固定范围,默认显示当前栏目及其子栏目的文章。 |
| 核心功能 | 调用、聚合,从不同地方抓取数据展示。 | 展示、分页,用于展示一个栏目的所有文章并自动分页。 |
| 分页 | 不支持,需要自己用JS或PHP实现。 | 支持,内置分页功能,{dede:pagelist/}。 |
简单记忆:
- 想在首页、侧边栏等地方调用某个或某几个栏目的文章,用
arclist。 - 想制作一个栏目列表页,展示该栏目下所有文章并分页,用
list。
arclist 是 DedeCMS 的瑞士军刀,掌握它是熟练使用 DedeCMS 的关键,你需要做的:
- 理解基本结构:
{dede:arclist}...{/dede:arclist}。 - 熟悉核心属性:特别是
typeid,row,orderby,flag等,知道它们的作用。 - 掌握内部字段:知道如何用
[field:title/],[field:arcurl/]等获取文章信息。 - 学会使用
function:特别是日期格式化MyDate()。 - 区分
arclist和list:在正确的场景使用正确的标签。
多加练习,尝试组合不同的属性和字段,你就能制作出各种复杂的列表效果。
