arclist 是织梦最核心、最常用的列表标签,主要用于在首页、列表页等地方调用文章列表,默认情况下,arclist 是一次性输出所有符合条件的文章,不自带分页功能,要实现分页,我们需要借助织梦的另一个核心标签:pagelist。

核心思路
实现 arclist 分页的完整思路如下:
- 准备模板文件:创建一个用于显示列表的模板文件(
list_article.htm)。 - 使用
{dede:list}:虽然问题问的是arclist,但在实际的列表页(如栏目页、搜索页)中,我们更常用的是{dede:list}标签,因为它内置了分页功能,我们先讲解这个最标准的方法。 - 结合
{dede:pagelist}:在{dede:list}循环结束后,使用{dede:pagelist}标签来生成分页的导航链接(如上一页、下一页、页码等)。 - 后台设置:确保后台的“核心” -> “频道设置”中,对应列表页的“列表命名规则”已正确设置。
- (可选)
arclist高级用法:如果确实需要在首页等非列表页用arclist实现类似分页的效果,可以通过自定义SQL和分页标签来实现,但这比较复杂,不常用。
标准方法 - 使用 {dede:list} 标签(推荐)
这是织梦官方推荐且最稳定的列表页分页方式。
步骤 1:创建列表模板
在织梦后台的“模板” -> “默认模板管理”中,新建一个模板文件,list_article.htm。
步骤 2:编写模板代码
在 list_article.htm 文件中,输入以下代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<p>当前位置:{dede:field.position/}</p>
<ul>
<!-- {dede:list} 是循环输出文章列表的核心标签,自带分页功能 -->
{dede:list pagesize='10' titlelen='50'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
</ul>
<!-- {dede:pagelist} 是生成分页导航的标签 -->
<div class="dede_pages">
<ul>
<li><span class="pageinfo">共 <strong>{dede:pagelist listsize='0'/}</strong> 页</span></li>
{dede:pagelist listitem='pre,next,end,option' listsize='5'/}
</ul>
</div>
</body>
</html>
代码详解:
-
{dede:list}:pagesize='10':这是最重要的属性,表示每页显示 10 条文章,你可以根据需要修改这个数字。titlelen='50':表示文章标题最多显示50个字符,超出部分用省略号表示。{dede:list}和{/dede:list}之间的所有内容都会被循环输出,直到达到pagesize设定的数量。
-
{dede:pagelist}:- 这个标签必须放在
{dede:list}循环之外,用来生成分页导航。 listitem='pre,next,end,option':定义了分页导航显示哪些元素。pre:上一页next:下一页end:尾页option:下拉跳转页
listsize='5':表示当前页码左右两侧各显示5个页码,如果总页数很多,页码会自动被省略号代替。{dede:pagelist listsize='0'/}:这句会直接输出总页数。
- 这个标签必须放在
步骤 3:后台设置
- 进入织梦后台的“核心” -> “频道设置”。
- 找到你需要分页的“文章”模型,点击右侧的“更改”按钮。
- 在“列表命名规则”这一栏,确保填写了正确的模板,
list_{tid}.html,这里的{tid}是栏目ID,织梦会自动生成对应的HTML文件,如list_1.html,list_2.html。 - 点击“确定保存”。
步骤 4:生成HTML并测试
- 进入“生成” -> “更新栏目HTML”或“更新文档HTML”。
- 找到你设置了此模板的栏目,点击“开始生成”。
- 生成完成后,访问你的栏目页面(
http://你的域名/list_1.html)。 - 当你显示的文章数量超过
pagesize设定的值时,页面底部就会出现由{dede:pagelist}生成的分页导航。
高级用法 - 在首页用 arclist 实现分页
我们希望在首页也只显示部分文章,并提供“更多”或分页链接,这可以通过 arclist 结合自定义变量和 pagelist 来实现,但需要一些额外的步骤。
注意:这种方法不如 {dede:list} 稳定和灵活,且会增加数据库查询负担,通常只在特殊需求下使用。

步骤 1:修改首页模板
在首页模板文件 index.htm 中,找到你使用 arclist 的地方,进行如下修改:
{dede:arclist pagesize='8' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
<!-- 在首页,分页导航通常不直接显示,而是用一个“更多”链接指向栏目列表页 -->
<a href="/list-1.html">查看更多 ></a>
为什么首页不直接用 pagelist?
因为 arclist 本身不处理分页逻辑,pagelist 需要知道总页数和当前页数,在首页,我们通常只显示第一页,所以最简单的做法是只显示 pagesize 数量的文章,然后提供一个指向完整列表页的链接。
如果一定要在首页实现分页(不推荐)
如果你确实想在首页实现分页,需要借助PHP和自定义SQL,过程非常复杂,大致如下:
- 获取当前页码:通过
PHP代码获取page参数。 - 计算偏移量:
pagesize * (page - 1)。 - 修改
arclist:arclist本身不支持偏移量,你需要用{dede:sql}标签手写SQL查询来替代arclist。 - 获取总数:再用一个
{dede:sql}查询符合条件的文章总数。 - 传递给
pagelist:将总数和当前页码通过global变量等方式传递给pagelist。
这个过程非常繁琐,且容易出错,强烈建议将完整的列表功能放在栏目页,用 {dede:list} 实现。
常见问题与解决
问题1:分页不显示,或者一直是第1页。
- 原因:最常见的原因是后台“频道设置”中的“列表命名规则”没有设置,或者设置的模板名称和实际不符,织梦需要生成静态的列表页(如
list_x.html)来支持分页逻辑。 - 解决:检查“核心” -> “频道设置” -> “文章” -> “列表命名规则”,确保已填写如
list_{tid}.html。
问题2:{dede:list} 调用不出来内容。
- 原因:
- 模板文件没有正确关联到栏目。
- 栏目选择的“列表模板”文件名不正确。
- 该栏目下没有发布任何文章。
- 解决:
- 进入“栏目管理”,编辑对应栏目,在“列表选项”中选择正确的“列表模板”(如
list_article.htm)。 - 确保该栏目有文章。
- 进入“栏目管理”,编辑对应栏目,在“列表选项”中选择正确的“列表模板”(如
问题3:pagelist 的样式很丑,如何自定义?
-
解决:
pagelist默认会生成带有class的HTML标签,你可以在CSS文件中定义这些class的样式。.pagea:普通页码的<a>.pagea:hover:鼠标悬停时的样式.pageen:当前页码的<span>.pagebtn:上一页、下一页等按钮的样式
在你的CSS文件中添加:
.dede_pages .pagea { padding: 5px 10px; border: 1px solid #ddd; color: #333; text-decoration: none; margin: 0 2px; } .dede_pages .pagea:hover { background-color: #f0f0f0; } .dede_pages .pageen { padding: 5px 10px; border: 1px solid #ff6600; background-color: #ff6600; color: #fff; margin: 0 2px; }
| 用途 | 是否自带分页 | 适用场景 | |
|---|---|---|---|
{dede:list} |
列表页循环输出文章 | 是(核心功能) | 栏目列表页、搜索结果页等所有需要分页的列表场景(推荐) |
{dede:arclist} |
首页、频道页等调用文章列表 | 否 | 首页推荐、相关文章、热门文章等不需要分页或分页逻辑简单的场景 |
{dede:pagelist} |
生成分页导航链接 | 独立标签 | 必须与 {dede:list} 配合使用,放在其循环外部 |
对于绝大多数情况,请使用 {dede:list} + {dede:pagelist} 的组合来实现 arclist 类似的列表分页功能,这是最标准、最可靠的方法。
