arclist 是 DedeCMS 中最常用、最核心的列表调用标签,但它本身不具备分页功能。arclist 的作用是在一个页面内调用指定数量的文章列表,要实现分页,我们需要结合另一个核心标签:pagelist。

实现 arclist 分页主要有两种常见场景:
- 首页/栏目页列表分页:这是最常见的需求,比如首页的“最新文章”栏目,或者一个栏目下的文章列表需要分页显示。
- 自定义页面分页:在一个自定义的HTML页面(
aboutus.htm)里,调用文章列表并分页。
下面我们分别讲解这两种场景的实现方法。
首页/栏目页列表分页
这是最标准、最简单的分页方式,DedeCMS 的默认模板已经内置了这种分页逻辑,我们只需要确保标签使用正确即可。
第1步:在模板文件中使用 arclist
在你需要显示列表的模板文件中(index.htm 或 list_article.htm),使用 arclist 标签来调用文章。
(图片来源网络,侵删)
关键点:
row:设置每页显示的文章数量,这个数值将影响分页。
typeid:指定要调用哪个栏目下的文章,首页调用时通常可以留空或指定特定栏目ID。
示例代码 (index.htm 或 list_article.htm):
<h2>最新文章</h2>
<ul class="news_list">
{dede:arclist row='10' typeid='1'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
代码解释:
{dede:arclist row='10' typeid='1'}:
row='10':表示每页显示 10 篇文章。
typeid='1':表示调用 ID 为 1 的栏目下的文章,如果是在栏目页模板,可以省略 typeid,它会自动调用当前栏目的文章。
{dede:pagelist ...}:
- 这个标签专门用来生成分页链接。
listsize='4':显示页码的数量,1 2 3 4 5 6 7 8 9,当前页前后各显示 4 个页码。
listitem='info,index,end,pre,next,pageno':定义分页条显示哪些元素。
info:显示总页数、总条数等信息,如“共 10 页/50 条”。
index:显示首页链接。
pre:显示上一页链接。
next:显示下一页链接。
pageno:显示页码。
end:显示尾页链接。
option:下拉跳转框。
第2步:确保后台设置正确
进入 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置。
检查以下两个选项是否已启用:
- 是否开启arclist分页功能:选择 “是”。
- 列表每页显示条数:设置一个默认值,这个值会被
arclist 的 row 属性覆盖,但保持一个默认值是好的习惯。
完成以上两步,你的首页或栏目页列表就可以正常分页了。
自定义页面(独立页面)中的 arclist 分页
有时,我们希望在一个自定义的页面(company_news.htm)里调用文章列表并实现分页,这种情况下,需要一些额外的设置。
第1步:创建模板文件
在 /templets/your_template/ 目录下创建一个新的模板文件,company_news.htm。
第2步:在模板中编写代码
在 company_news.htm 中,写入 arclist 和 pagelist
示例代码 (company_news.htm):
{dede:include filename="head.htm"/}
<h1>公司新闻动态</h1>
<div class="news_content">
{dede:arclist row='8' typeid='3' titlelen='40'}
<div class="news_item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="news_summary">[field:description function='cn_substr(@me, 100)'/]...</p>
<div class="news_meta">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</div>
</div>
{/dede:arclist}
</div>
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
{dede:include filename="footer.htm"/}
注意:这里的 typeid 必须指定为你想要调用文章的栏目ID。
第3步:创建对应的栏目(关键步骤)
DedeCMS 的分页功能依赖于栏目的分页设置,即使是自定义页面,也需要“挂靠”到一个栏目才能获得分页参数。
- 进入后台 -> 核心 -> 栏目管理。
- 创建一个新栏目(命名为“公司新闻展示”)。
- 在栏目属性中,选择 “最终列表栏目”。
- 在 “列表模板选项” 中,选择你刚刚创建的模板文件
company_news.htm。
- 最重要的一步:在 “列表每页显示条数” 中,填写你希望在每页显示的文章数量(
8),这个值会和 arclist 标签里的 row 值对应。
- 保存栏目。
第4步:生成栏目页面
- 进入后台的 “生成” -> “更新栏目HTML”。
- 找到你刚刚创建的“公司新闻展示”栏目,点击右侧的 “更新” 按钮。
访问这个栏目生成的页面(http://www.yoursite.com/plus/list.php?tid=X,X是你的栏目ID),你就能看到带有完整分页功能的文章列表了。
常见问题与技巧 (FAQ)
arclist 分页后,URL 中出现 ?pageno=2 这样的参数,如何美化?
默认的分页 URL 是动态的,如果需要伪静态(美化URL),需要做以下设置:
- 后台设置:
- 进入 系统 -> 系统基本参数 -> 核心设置。
- 将 “栏目列表页命名规则” 和 “文章列表分页命名规则” 修改为你想要的伪静态后缀,
list_{tid}_{page}.html。
- 伪静态规则:
- 在你的服务器上(如 Apache 的
.htaccess 或 Nginx 的 rewrite 规则)添加对应的伪静态规则,将 list_1_2.html 这样的URL重写为 plus/list.php?tid=1&pageno=2。
- 重新生成:
修改完规则后,需要重新生成相关页面才能生效。
为什么我的 pagelist 不显示,或者显示为“首页 上一页 下一页 尾页”?
这通常是因为 arclist 调用的文章总数小于等于 row 设置的值,你设置了 row='10',但当前栏目只有 8 篇文章,那么自然就不需要分页,pagelist 也就只显示导航链接,而不显示页码,尝试调用一个文章数量较多的栏目测试即可。
arclist 和 SQL 标签调用文章分页有什么区别?
arclist:功能强大,标签简洁,支持各种排序和调用方式,是官方推荐的首选方式,分页逻辑已经内置,配置简单。
SQL:灵活性极高,可以执行任何自定义的 SQL 查询,实现 arclist 无法完成的高级调用。SQL 标签本身不带分页功能,需要手动编写分页逻辑,包括计算总数、获取当前页码、使用 limit 进行数据截取等,实现起来更复杂。
对于绝大多数场景,使用 arclist + pagelist 是最简单、最稳定的选择。
希望这份详细的教程能帮助你完全掌握 DedeCMS 中 arclist 的分页功能!
在你需要显示列表的模板文件中(index.htm 或 list_article.htm),使用 arclist 标签来调用文章。

关键点:
row:设置每页显示的文章数量,这个数值将影响分页。typeid:指定要调用哪个栏目下的文章,首页调用时通常可以留空或指定特定栏目ID。
示例代码 (index.htm 或 list_article.htm):
<h2>最新文章</h2>
<ul class="news_list">
{dede:arclist row='10' typeid='1'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
代码解释:
{dede:arclist row='10' typeid='1'}:row='10':表示每页显示 10 篇文章。typeid='1':表示调用 ID 为 1 的栏目下的文章,如果是在栏目页模板,可以省略typeid,它会自动调用当前栏目的文章。
{dede:pagelist ...}:- 这个标签专门用来生成分页链接。
listsize='4':显示页码的数量,1 2 3 4 5 6 7 8 9,当前页前后各显示 4 个页码。listitem='info,index,end,pre,next,pageno':定义分页条显示哪些元素。info:显示总页数、总条数等信息,如“共 10 页/50 条”。index:显示首页链接。pre:显示上一页链接。next:显示下一页链接。pageno:显示页码。end:显示尾页链接。option:下拉跳转框。
第2步:确保后台设置正确
进入 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置。
检查以下两个选项是否已启用:
- 是否开启arclist分页功能:选择 “是”。
- 列表每页显示条数:设置一个默认值,这个值会被
arclist的row属性覆盖,但保持一个默认值是好的习惯。
完成以上两步,你的首页或栏目页列表就可以正常分页了。
自定义页面(独立页面)中的 arclist 分页
有时,我们希望在一个自定义的页面(company_news.htm)里调用文章列表并实现分页,这种情况下,需要一些额外的设置。
第1步:创建模板文件
在 /templets/your_template/ 目录下创建一个新的模板文件,company_news.htm。
第2步:在模板中编写代码
在 示例代码 ( 注意:这里的 DedeCMS 的分页功能依赖于栏目的分页设置,即使是自定义页面,也需要“挂靠”到一个栏目才能获得分页参数。 访问这个栏目生成的页面( 默认的分页 URL 是动态的,如果需要伪静态(美化URL),需要做以下设置: 修改完规则后,需要重新生成相关页面才能生效。 这通常是因为 对于绝大多数场景,使用 希望这份详细的教程能帮助你完全掌握 DedeCMS 中 company_news.htm 中,写入 arclist 和 pagelist
company_news.htm):{dede:include filename="head.htm"/}
<h1>公司新闻动态</h1>
<div class="news_content">
{dede:arclist row='8' typeid='3' titlelen='40'}
<div class="news_item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="news_summary">[field:description function='cn_substr(@me, 100)'/]...</p>
<div class="news_meta">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</div>
</div>
{/dede:arclist}
</div>
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</ul>
</div>
{dede:include filename="footer.htm"/}
typeid 必须指定为你想要调用文章的栏目ID。第3步:创建对应的栏目(关键步骤)
company_news.htm。8),这个值会和 arclist 标签里的 row 值对应。第4步:生成栏目页面
http://www.yoursite.com/plus/list.php?tid=X,X是你的栏目ID),你就能看到带有完整分页功能的文章列表了。
常见问题与技巧 (FAQ)
arclist 分页后,URL 中出现 ?pageno=2 这样的参数,如何美化?
list_{tid}_{page}.html。
.htaccess 或 Nginx 的 rewrite 规则)添加对应的伪静态规则,将 list_1_2.html 这样的URL重写为 plus/list.php?tid=1&pageno=2。为什么我的
pagelist 不显示,或者显示为“首页 上一页 下一页 尾页”?arclist 调用的文章总数小于等于 row 设置的值,你设置了 row='10',但当前栏目只有 8 篇文章,那么自然就不需要分页,pagelist 也就只显示导航链接,而不显示页码,尝试调用一个文章数量较多的栏目测试即可。arclist 和 SQL 标签调用文章分页有什么区别?
arclist:功能强大,标签简洁,支持各种排序和调用方式,是官方推荐的首选方式,分页逻辑已经内置,配置简单。SQL:灵活性极高,可以执行任何自定义的 SQL 查询,实现 arclist 无法完成的高级调用。SQL 标签本身不带分页功能,需要手动编写分页逻辑,包括计算总数、获取当前页码、使用 limit 进行数据截取等,实现起来更复杂。arclist + pagelist 是最简单、最稳定的选择。arclist 的分页功能!
