第一步:在模板文件中使用分页标签 (最常用)
这是最简单、最常用的方法,适用于绝大多数情况,DedeCMS 提供了非常方便的内置标签 {dede:pagelist} 来实现列表页的分页。

模板文件示例
打开你的列表页模板文件,通常位于 /templets/default/ 目录下,list_article.htm。
在这个模板文件中,你需要两处代码:
- 文章列表循环:使用
{dede:list}标签来循环输出文章。 - 分页导航:使用
{dede:pagelist}标签来生成分页链接。
{dede:include filename="head.htm"/}
<!-- 文章列表开始 -->
<div class="listbox">
<ul class="e2">
<!--
dede:list 标签用于循环输出文章列表
pagesize='10' 表示每页显示 10 条文章
-->
{dede:list pagesize='10'}
<li>
<span class="title">
<a href="[field:arcurl/]">[field:title/]</a>
</span>
<span class="info">([field:pubdate function="MyDate('Y-m-d',@me)"/])</span>
</li>
{/dede:list}
</ul>
</div>
<!-- 分页导航开始 -->
<div class="dede_pages">
<ul class="pagelist">
<!--
dede:pagelist 标签用于生成分页导航
listitem="info,index,end,pre,next,pageno" 定义显示哪些分页元素
listsize="5" 显示当前页码前后各 5 个页码
-->
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
</ul>
</div>
<!-- 分页导航结束 -->
{dede:include filename="footer.htm"/}
{dede:pagelist} 标签常用参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
listitem |
设置显示哪些分页元素。info(总数/页数), index(首页), pre(上一页), pageno(页码), next(下一页), end(尾页)。 |
listitem="info,index,end,pre,next" |
listsize |
显示的页码数量,即当前页码前后显示的页码个数。 | listsize="3" |
option |
自定义样式,通常用于修改分页链接的 CSS 类名。 | option="class='page-link'" |
第二步:后台设置列表分页参数 (重要)
仅仅在模板中使用标签是不够的,你还需要在后台设置好相关的参数,否则分页功能无法正常工作。
- 登录 DedeCMS 后台。
- 进入 系统 -> 系统基本参数 -> 核心设置。
- 找到并修改以下几项关键设置:
- 列表每页显示条数:这里设置的数值会作为默认值,但你可以在模板的
{dede:list}标签中通过pagesize参数覆盖它。 - 列表命名规则:确保列表页的命名规则是正确的,通常是
list_{tid}_{page}.html,{page}是页码变量,这对于生成静态化分页页至关重要。
- 列表每页显示条数:这里设置的数值会作为默认值,但你可以在模板的
- 进入“频道模型”:
- 点击 模型管理”,然后点击你文章所在的模型(通常是“文章”)。
- 在打开的页面中,找到 “列表模板” 设置项,确保这里填写的模板文件名(如
list_article.htm)与你实际使用的模板文件一致。 - 同样,在这里也可以设置 “列表每页显示条数”,它会覆盖“系统基本参数”里的全局设置。
第三步:解决常见问题与高级用法
问题1:列表页不显示分页,只显示一页?
原因分析: 最常见的原因是数据库中符合条件的数据量不足,如果你的列表页设置了每页显示10条,而数据库里只有8条符合条件的文章,那么自然就不会有第二页,分页导航也就不会显示。

解决方法:
- 确认你的文章数量是否足够。
- 检查后台的 “系统 -> SQL命令行工具”,执行以下 SQL 语句,可以手动生成一些测试文章:
INSERT INTO `dede_archives` (`typeid`, `sortrank`, `flag`, `ismake`, `channel`, `arcrank`, `click`, `money`, `title`, `shorttitle`, `color`, `writer`, `source`, `litpic`, `pubdate`, `senddate`, `mid`, `keywords`, `lastpost`, `scores`, `goodpost`, `badpost`, `voteid`, `notpost`, `description`, `filename`, `dutyadmin`, `tackid`, `mtype`, `userip`) VALUES (1, 100, 'c', 1, 1, 0, 0, 0, '测试文章标题', '', '', 'admin', '未知', '', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 1, '', 0, 0, 0, 0, 0, 0, '这是测试文章的内容摘要。', '', 1, 0, '', '127.0.0.1');
注意:
dede_archives是默认的前缀,如果你的数据库前缀不是dede_,请自行修改。
问题2:分页样式不好看,如何自定义?
你可以通过修改 CSS 文件来美化分页样式,分页导航的 HTML 结构通常是固定的,你可以通过为其添加自定义 CSS 类来实现。
方法:

-
修改模板标签:在
{dede:pagelist}标签中添加option参数,指定一个 CSS 类。{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" option="class='page-link'"/} -
编写 CSS 样式:在你的 CSS 文件(如
/templets/default/style/dedecms.css)中,为这个类编写样式。/* 为分页链接添加基本样式 */ .page-link { display: inline-block; padding: 5px 10px; margin: 0 5px; border: 1px solid #ddd; border-radius: 3px; text-decoration: none; color: #333; } /* 鼠标悬停效果 */ .page-link:hover { background-color: #f8f8f8; border-color: #ccc; } /* 当前页码样式 */ .page-link.current { background-color: #007bff; color: white; border-color: #007bff; } /* 禁用链接(如首页/上一页在第一页时)样式 */ .page-link.disabled { color: #999; cursor: not-allowed; border-color: #eee; }注意:DedeCMS 默认生成的分页类名可能不同,你需要用浏览器“审查元素”功能查看实际的 HTML 结构和类名,然后针对性地编写 CSS。
高级用法:自定义调用并分页 (不使用默认的列表页)
你可能需要在一个自定义的页面(比如首页)调用某个分类下的文章并实现分页,这时,你不能使用 {dede:list},而应该使用 {dedarclist}。
示例:在首页调用“技术分享”分类(ID=1)的文章,并分页,每页5条。
-
创建首页模板:确保你的首页模板文件(如
/templets/default/index.htm)存在。 -
使用
{dede:arclist}:<!-- 在首页模板的适当位置添加以下代码 --> <div class="home-article-list"> <h3>技术分享</h3> <ul> {dede:arclist typeid='1' pagesize='5'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span class="date">([field:pubdate function="MyDate('Y-m-d',@me)"/])</span> </li> {/dede:arclist} </ul> <!-- 关键:使用 {pagelist} 标签 --> <div class="dede_pages"> <ul class="pagelist"> {pagelist listitem="info,index,end,pre,next,pageno" listsize="3"/} </ul> </div> </div>typeid='1':指定调用分类ID为1的文章。pagesize='5':指定每页显示5条。{pagelist}:注意,在{dede:arclist}标签内部,分页标签是{pagelist},而不是{dede:pagelist}。
第四步:二次开发与底层原理 (进阶)
如果你对默认的分页逻辑不满意,或者需要更复杂的功能,就需要修改 PHP 文件。
找到核心分页文件
DedeCMS 的分页逻辑主要在以下文件中:
/include/arc.listview.class.php:这是最核心的列表页分页处理类,当你访问一个列表页(如list_1_2.html)时,系统会调用这个类来处理数据、生成分页和缓存。
修改分页逻辑
如果你想在分页链接中添加自定义参数(?from=nav),你可以修改这个文件。
-
打开
arc.listview.class.php。 -
找到
GetPageListST函数(或其他类似名称的分页生成函数)。 -
在生成链接的地方,修改
$purl的值,在$purl后面拼接你的参数。// 原始代码可能类似这样 $purl = $this->GetCurUrl(); // 修改后,添加自定义参数 $purl = $this->GetCurUrl() . "?from=nav";
注意:直接修改核心文件在系统升级后可能会被覆盖,建议做好备份或通过二次开发的方式实现。
修改分页样式 (底层)
如果你发现分页的 HTML 结构非常顽固,难以用 CSS 修改,可以直接修改 arc.listview.class.php 中生成分页 HTML 的代码,找到生成 <a> 标签的部分,直接修改其 class 属性。
| 场景 | 解决方案 |
|---|---|
| 常规列表页分页 | 在 list_xxx.htm 模板中使用 {dede:list} + {dede:pagelist} 标签,并确保后台参数设置正确。 |
| 自定义页面调用并分页 | 使用 {dede:arclist} + {pagelist} 标签组合。 |
| 修改分页样式 | 通过 option 参数指定 CSS 类,然后在 CSS 文件中编写样式,或使用浏览器审查元素找到具体类名。 |
| 分页不显示 | 检查数据量是否足够,检查后台的列表每页显示条数设置。 |
| 高级自定义 | 修改 /include/arc.listview.class.php 文件,这是最根本但风险最高的方法。 |
希望这份详细的指南能帮助你完全掌握 DedeCMS 的文章列表分页功能!
