arclist 标签基础语法
arclist 标签的基本结构非常简单,通常放在需要显示列表的HTML模板文件中(如 index.htm, list_article.htm 等)。

(图片来源网络,侵删)
{dede:arclist}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
语法结构解析:
{dede:arclist}: 这是标签的开始。属性: 在开始标签内,可以添加各种属性来控制列表的显示内容、数量、排序等。- 底层模板变量: 在
{dede:arclist}和{/dede:arclist}之间,是循环输出的单条记录内容,这里使用[field:xxx/]的形式来调用当前这条记录的字段。 {/dede:arclist}: 这是标签的结束。
arclist 常用属性详解
要新建一个符合需求的 arclist,关键在于配置好它的属性,以下是最常用的一些属性:
控制调用数量
row: 设置调用文档的数量。- 示例:
row='10'表示调用10条文档。
- 示例:
设置栏目ID
typeid: 指定要调用的栏目ID,多个ID用英文逗号隔开。- 调用单个栏目:
typeid='1'(调用ID为1的栏目及其所有子栏目的文章) - 调用多个栏目:
typeid='1,3,5'(调用ID为1, 3, 5的栏目及其所有子栏目的文章) - 仅调用指定栏目(不包含子栏目):
typeid='1'默认包含子栏目,若要排除,需结合nativeplace或channelid等高级用法,或使用SQL语句,对于大多数情况,默认行为就足够了。
- 调用单个栏目:
设置排序方式
sort: 按指定字段排序。- 常用值:
hot: 按点击数排序(降序)pubdate: 按发布时间排序(降序)click: 同hotrand: 随机排序id: 按文章ID排序
- 常用值:
order: 排序方式,asc(升序) 或desc(降序)。- 示例:
sort='pubdate' order='desc'表示按发布时间降序排列(最新的在前)。
- 示例:
长度
len`: 设置标题显示的字符长度。
- 示例:
titlelen='30'表示标题最多显示30个字符,超出部分用省略号...代替。
设置调用栏目
channelid: 指定模型ID来调用。- 常用值:
1: 文章模型2: 图集模型-1: 调用所有模型
- 示例:
channelid='1'只调用文章。
- 常用值:
设置起始位置
offset: 从第N条记录开始调用。- 示例:
row='10' offset='5'表示从第6条记录开始,共调用10条。
- 示例:
设置特定时间范围
subday: 调用指定天数内发布的文档。- 示例:
subday='7'表示调用最近7天内发布的文档。
- 示例:
控制栏目信息显示
type: 控制栏目名称的显示方式。type='top': 只显示顶级栏目名type='son': 只显示当前栏目名type='self': 只显示最终栏目名(最底层的栏目)type='last': 同self
arclist 底层模板变量([field:xxx/])
这些变量用于在循环中输出每条文章的具体信息。

(图片来源网络,侵删)
| 变量名 | 说明 | 示例 |
|---|---|---|
[field:title/] |
<a href="[field:arcurl/]">[field:title/]</a> |
|
[field:arcurl/] |
文章链接 | <a href="[field:arcurl/]">阅读全文</a> |
[field:pubdate/] |
发布时间(时间戳) | 通常需要配合function格式化 |
[field:description/] |
文章摘要 | [field:description function='cn_substr(@me, 100)'/] |
[field:click/] |
点击次数 | <span>点击:[field:click/]</span> |
[field:litpic/] |
文章缩略图 | <img src="[field:litpic/]" alt="[field:title/]"> |
[field:typename/] |
文章所属栏目名 | <span>[field:typename/]</span> |
[field:id/] |
文章ID | <span>ID: [field:id/]</span> |
综合示例:新建一个“最新文章”列表
假设我们要在首页调用ID为1的栏目(新闻中心)下的10篇最新文章,标题显示30个字符,并显示发布日期和缩略图。
在后台找到对应的首页模板文件
通常是 /templets/default/index.htm。
在模板中插入以下代码

(图片来源网络,侵删)
<!-- 最新文章列表开始 -->
<div class="latest-news">
<h2>最新文章</h2>
<ul>
{dede:arclist
typeid='1'
row='10'
titlelen='30'
orderby='pubdate'
order='desc'
imgwidth='150'
imgheight='100'
}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]" width="150" height="100">
<h3>[field:title/]</h3>
</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
</div>
<!-- 最新文章列表结束 -->
代码解析:
typeid='1': 调用ID为1的栏目。row='10': 显示10篇文章,len='30'`: 标题最多30个字符。orderby='pubdate' order='desc': 按发布时间倒序排列。imgwidth='150' imgheight='100': 如果文章没有缩略图,系统会自动生成一个指定尺寸的空白图片,有助于页面布局稳定。[field:pubdate function="MyDate('Y-m-d',@me)"/]: 这是织梦强大的功能,对pubdate字段进行处理,调用系统自带的MyDate函数,将时间戳格式化为年-月-日的格式。
高级技巧与常见问题
调用指定自定义字段
如果你的文章模型有自定义字段,author (作者),可以这样调用:
{dede:arclist}
作者:[field:author/]
{/dede:arclist}
如何排除某个栏目?
arclist 本身没有直接排除栏目的属性,通常有两种方法:
-
方法一(推荐):使用SQL语句 在
channel标签或arclist标签中使用sql属性。{dede:arclist sql="SELECT * FROM `dede_archives` WHERE typeid NOT IN (2, 5) ORDER BY pubdate DESC LIMIT 10"} ... {/dede:arclist}注意:直接写SQL需要你对数据库表结构有一定了解,
dede_archives是文章主表。 -
使用多个
typeid如果要排除的栏目不多,可以手动列出所有你想要调用的栏目ID,用逗号隔开,从而间接排除掉未列出的ID。
列表样式错乱怎么办?
通常是因为 li 标签的浮动(float)问题导致的,请确保你的CSS代码正确处理了列表项的浮动和清除浮动。
CSS可以这样写:
.latest-news ul li {
float: left;
width: 200px;
margin-right: 10px;
list-style: none;
}
.latest-news ul li:after { /* 清除浮动 */
content: "";
display: block;
clear: both;
}
希望这份详细的指南能帮助你成功在织梦中新建和使用 arclist
