核心原理
实现分页的核心在于 两个标签配合使用:

(图片来源网络,侵删)
{dede:arclist}: 负责获取当前页应该显示的文章列表,它通过pagesize参数控制每页显示的文章数量,并通过limit参数(由底层模板的page变量决定)来定位当前页的数据。{dede:pagelist}: 负责生成分页导航链接(如:首页、上一页、1 2 3 4 5、下一页、末页),它会根据总文章数和每页显示数,自动计算出总页数,并生成相应的URL。
实现步骤
第1步:创建模板文件
在你的模板目录(通常是 /templets/your_template/)下创建一个专门用于列表页的模板文件,list_article.htm。
第2步:在模板文件中编写标签代码
打开 list_article.htm 文件,按照以下结构编写代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:global.cfg_webname/}</title>
</head>
<body>
<h1>文章列表</h1>
<!-- 第一步:使用 {dede:arclist} 获取当前页的文章列表 -->
{dede:arclist
typeid='0'
titlelen='30'
row='10'
pagesize='10'
orderby='pubdate'
orderway='desc'
}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
<!-- 第二步:使用 {dede:pagelist} 生成分页导航 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="index,pre,page,next,end,option" listsize="5" /}
</ul>
</div>
</body>
</html>
第3步:关键参数详解
{dede:arclist} 关键参数
typeid='0': 指定要获取文章的栏目ID。0表示获取全站所有文章。- 填入具体的数字(如
1)则只获取该栏目下的文章。
pagesize='10': 这是实现分页最核心的参数! 它定义了每页显示多少条文章,设置为10,那么每页就会显示10篇文章。row='10': 这个参数在开启了分页功能时,通常建议与pagesize设置成相同的值,它表示arclist标签一次循环输出的记录数,在分页场景下,pagesize会自动覆盖row的作用,但保持一致是好的习惯。limit='起始位置,显示条数': 这个参数用于手动控制分页,但在标准分页实现中,我们通常不直接使用它,DedeCMS 的底层机制会自动根据当前页码计算出limit值,在第2页,limit会自动变成10,10(假设pagesize=10)。
{dede:pagelist} 关键参数
listitem='...': 定义分页导航栏显示哪些项目。index: 首页pre: 上一页page: 页码(如 1, 2, 3...)next: 下一页end: 末页option: 下拉跳转框- 你可以自由组合,
listitem="pre,page,next"只显示上一页、页码和下一页。
listsize='5': 定义页码显示的宽度,即当前页码左右两侧各显示多少个页码。listsize='2',当前页是第3页,就会显示1, 2, [3], 4, 5。
完整的 list_article.htm 示例
这是一个更完整、更美观的列表页模板示例,包含了CSS样式。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:global.cfg_webname/} - {dede:field.title/}</title>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; }
.article-list { list-style: none; padding: 0; }
.article-list li { border-bottom: 1px solid #eee; padding: 15px 0; }
.article-list li a { text-decoration: none; color: #333; font-size: 16px; font-weight: bold; }
.article-list li a:hover { color: #0066cc; }
.article-list li .date { color: #999; font-size: 12px; float: right; }
.dede_pages { margin-top: 30px; text-align: center; }
.pagelist { display: inline-block; list-style: none; padding: 0; }
.pagelist li { display: inline; margin: 0 5px; }
.pagelist li a, .pagelist li span { display: inline-block; padding: 5px 10px; border: 1px solid #ddd; border-radius: 3px; text-decoration: none; color: #333; }
.pagelist li a:hover { background-color: #f0f0f0; }
.pagelist li .thisclass { background-color: #0066cc; color: #fff; border-color: #0066cc; }
</style>
</head>
<body>
<h1>{dede:field.title/}</h1>
<!-- 文章列表 -->
<ul class="article-list">
{dede:arclist
typeid='0'
titlelen='50'
row='10'
pagesize='10'
orderby='pubdate'
orderway='desc'
}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
<!-- 分页导航 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="index,pre,page,next,end,option" listsize="5" /}
</ul>
</div>
</body>
</html>
常见问题与注意事项
分页URL不正确或404错误
- 原因: 这是最常见的问题,通常是因为网站开启了伪静态,但DedeCMS的后台设置没有正确配置。
- 解决方案:
- 登录DedeCMS后台。
- 进入 “系统” -> “系统基本参数” -> “核心设置”。
- 找到 “是否使用伪静态” 选项,选择 “是”。
- 找到 “列表命名规则” 和 “文章命名规则”,确保它们设置了正确的伪静态后缀,
list_{page}.html。 - 非常重要: 上传并覆盖服务器的
rewritelist.php文件,这个文件在DedeCMS安装包的include/目录下,你需要根据你的服务器环境(Apache, Nginx, IIS)来配置对应的伪静态规则,并将规则添加到你的网站配置中,Nginx的规则通常是:rewrite ^/list-([0-9]+)\.html$ /plus/list.php?tid=$1 last; rewrite ^/list-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&PageNo=$2 last;
分页不生效,只显示第一页
- 原因: 99%的情况是因为
{dede:arclist}标签中没有设置pagesize参数,DedeCMS需要这个参数来知道如何进行分页切割。 - 解决方案: 检查你的
{dede:arclist}标签,务必加上pagesize='每页条数'。
如何在首页实现分页?
-
场景: 首页 (
index.htm) 也想只显示10篇文章,并带分页。
(图片来源网络,侵删) -
方法: 首页的分页逻辑和列表页略有不同,你需要修改首页的模板文件
index.htm。- 在
{dede:arclist}标签中加入pagesize='10'。 - 在
{dede:arclist}标签后,同样加上{dede:pagelist}- 为了让分页链接指向首页,你需要给
{dede:pagelist}添加一个tagid属性,并在{dede:arclist}中也使用相同的tagid。<!-- 首页 index.htm --> {dede:arclist typeid='0' pagesize='10' tagid='indexpage'} ... 循环内容 ... {/dede:arclist} - 为了让分页链接指向首页,你需要给
{dede:pagelist tagid='indexpage' listitem="index,pre,page,next,end" /}``` 这样,分页链接就会生成类似 `index_2.html`, `index_3.html` 的URL,你需要为这些URL配置伪静态规则。 - 在
实现DedeCMS {dede:arclist} 分页,记住以下三要素:
- 模板文件: 创建一个列表页模板(如
list_article.htm)。 arclist: 务必添加pagesize='每页条数'参数。pagelist: 在arclist标签之后,添加{dede:pagelist}来生成分页导航。- 伪静态配置: 如果使用伪静态,请确保后台设置正确并上传了
rewritelist.php,配置了服务器规则。
遵循以上步骤,你就可以成功地在DedeCMS中实现列表分页功能了。

(图片来源网络,侵删)
