本文将从以下几个方面进行深入剖析,帮助你彻底解决 DedeCMS 分页调试问题:

- 核心分页标签
- 分页不显示的常见原因及排查步骤
- 自定义分页样式
- 在列表页调用分页
- 页调用分页
- 调试工具与技巧
核心分页标签
在 DedeCMS 中,分页功能主要由两个核心变量和系统函数实现:
-
{dede:pagelist listitem="index,end,pre,next,pageno,option" listsize="5" /}- 这是最核心的分页标签,用于生成分页的链接按钮(如“首页”、“上一页”、“下一页”、“尾页”以及页码)。
listitem: 定义要显示的分页项,常用值包括index(首页),pre(上一页),next(下一页),end(尾页),pageno(当前页码),option(下拉跳转框)。listsize: 定义显示的页码数量。listsize="5"表示当前页码左右各显示 2 个页码(加上自己共5个)。
-
{dede:pagebreak/}- 这个标签用于内容页,将长文章分割成多页,它本身不生成分页导航,而是插入一个分页符,在内容页模板中,你需要配合
{dede:pagelist}来显示分页链接。
- 这个标签用于内容页,将长文章分割成多页,它本身不生成分页导航,而是插入一个分页符,在内容页模板中,你需要配合
分页不显示的常见原因及排查步骤
这是最常见的问题,当你在列表页或内容页看不到分页时,请按以下步骤逐一排查:

确认是否有分页数据
这是最根本的问题,分页是根据总记录数来生成的,如果你的列表本身就没有数据,自然就不会有分页。
- 检查SQL语句:如果你使用了自定义的SQL查询,请确保你的
LIMIT语句是正确的,并且查询有结果。 - 检查栏目设置:检查你的栏目是否设置了“使用列表”,以及栏目内容是否为空。
检查模板标签是否正确
-
标签位置:确保
{dede:pagelist}标签被放在了正确的循环标签{dede:list}或{dede:arclist}的外部。-
正确示例:
{dede:list pagesize='10'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:list} <!-- 分页标签必须放在循环标签之外 --> <div class="dede_pages"> <ul class="pagelist"> {dede:pagelist listitem="index,end,pre,next,pageno" listsize="5"/} </ul> </div> -
错误示例:将
{dede:pagelist}放在{dede:list}循环内部,会导致每篇文章后面都出现一套分页。
(图片来源网络,侵删)
-
-
标签拼写:检查标签名是否拼写错误,
pagelist写成了pagelst。
检查 pagesize 设置
{dede:list} 和 {dede:arclist} 默认每页显示10条记录,如果你想让分页生效,并且希望每页显示的数量不是10,请明确指定 pagesize 属性。
- 示例:
{dede:list pagesize='20'}表示每页显示20条记录,如果你的总记录数少于等于20,那么分页只会显示一页,所以你看不到分页导航,请确保你的总记录数大于你设置的pagesize值。
检查CSS样式
有时候分页已经生成了,但因为CSS样式问题,导致它不可见或错位。
- 检查CSS冲突:检查你的模板CSS文件中是否有针对
ul,li,a等标签的全局样式,它们可能会覆盖分页列表的样式。 - 检查容器样式:分页列表通常包含在一个
div或ul容器中,检查这个容器是否有display: none;或者height: 0;等导致其不可见的样式。 - 使用浏览器开发者工具:
- 在浏览器中按
F12打开开发者工具。 - 切换到 "Elements" (元素) 标签页。
- 在代码中找到你的分页列表(
class="pagelist"的ul元素)。 - 检查这个元素在页面上是否真的存在,以及它的样式是否正确。
- 在浏览器中按
检查缓存问题
DedeCMS 有强大的缓存机制,有时修改模板后,后台或前台缓存没有更新,导致看不到效果。
- 更新系统缓存:登录后台,进入“系统” -> “一键更新网站” -> “更新HTML” -> “更新主页HTML”,并勾选“更新栏目页”和“更新文档页”。
- 清理模板缓存:如果只是修改了列表页模板,可以尝试在后台的“模板” -> “模板管理”中,找到对应的模板文件,点击“更新”按钮。
自定义分页样式
默认的分页样式通常比较简陋,我们可以通过修改标签属性和自定义CSS来美化它。
使用 listitem 和 template 属性
listitem:控制显示哪些按钮。{dede:pagelist listitem='index,end,pre,next,pageno,option'}显示所有常用项。{dede:pagelist listitem='pre,next,pageno'}只显示上一页、下一页和页码。
template:这是最强大的自定义方式,它允许你指定一个自定义的模板文件来渲染分页。
自定义模板步骤:
-
创建模板文件:
-
在你的模板目录(通常是
/templets/default/或你自定义的模板目录)下,创建一个新的HTML文件,my_pagination.htm。 -
在这个文件中,你可以使用以下变量来构建分页:
[index]:首页链接[pre]:上一页链接[next]:下一页链接[end]:尾页链接[pageno]:当前页码[totalpage]:总页数[itempage]:每页条数[listitem]:已选的分页项列表
-
my_pagination.htm示例:<div class="my-pager"> <ul> <li>[index]</li> <li>[pre]</li> <!-- 循环生成页码 --> <li>[listitem]</li> <li>[next]</li> <li>[end]</li> <li>共 [totalpage] 页</li> </ul> </div>
-
-
在模板中调用:
- 在你的列表页模板中,使用
template属性指向你创建的文件。 - 调用示例:
<div class="dede_pages"> {dede:pagelist template='my_pagination.htm' listitem='index,end,pre,next,pageno' listsize='5'/} </div>
- 在你的列表页模板中,使用
-
编写CSS:
- 为你的自定义分页样式编写CSS。
- CSS示例:
.my-pager ul { list-style: none; padding: 0; display: flex; gap: 5px; } .my-pager li { padding: 5px 10px; border: 1px solid #ddd; border-radius: 3px; } .my-pager a { text-decoration: none; color: #333; } .my-pager .thisclass { background-color: #007bff; color: white; border-color: #007bff; }
在列表页调用分页
这是最常见的情况,用于文章列表、产品列表等。
模板代码示例 (list_article.htm)
<!DOCTYPE html>
<html>
<head>{dede:field.title/}</title>
<link rel="stylesheet" href="/templets/default/css/style.css">
</head>
<body>
<h1>{dede:field.title/}</h1>
<!-- 文章列表循环 -->
{dede:list pagesize='15'}
<div class="list-item">
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p>[field:description function='cn_substr(@me, 100)'/]...</p>
<span>发布时间:[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</div>
{/dede:list}
<!-- 分页导航 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="index,end,pre,next,pageno" listsize="5"/}
</ul>
</div>
</body>
</html>
页调用分页
用于单篇文章被 {dede:pagebreak/} 分成多页后的导航。
模板代码示例 (article_article.htm)
<!DOCTYPE html>
<html>
<head>{dede:field.title/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<div class="content">
{dede:field.body/}
<!-- 这是文章内容分页符,由编辑器插入 -->
{dede:pagebreak/}
<!-- 文章内容分页导航 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="index,end,pre,next,pageno" listsize="5"/}
</ul>
</div>
</div>
</body>
</html>
调试工具与技巧
-
浏览器开发者工具 (F12):
- Elements (元素):检查HTML结构,确认分页标签是否被正确渲染。
- Console (控制台):查看是否有JavaScript错误,有时分页功能依赖于JS。
- Network (网络):检查页面加载时是否有404错误(比如CSS文件路径错误)。
-
开启DedeCMS调试模式: 在后台的“系统” -> “系统基本参数” -> “核心设置”中,找到“是否开启模板调试”,设置为“是”,这样在页面底部会显示模板解析时间等信息,有助于判断性能问题,但不会直接解决分页不显示的问题。
-
简化问题:
- 如果你的模板非常复杂,可以尝试切换到 DedeCMS 默认的模板(如
default),看看分页是否正常,如果正常,说明问题出在你自定义的模板文件中,再逐步排查你的修改。
- 如果你的模板非常复杂,可以尝试切换到 DedeCMS 默认的模板(如
通过以上步骤,你应该能够定位并解决 99% 的 DedeCMS 分页问题,核心思路是:先确认数据,再检查标签位置和语法,然后排查CSS样式,最后考虑缓存问题。
