DedeCMS 的分页功能是其核心功能之一,主要通过一个自定义函数 GetPageList() 来实现,这个函数会自动生成上一页、页码、下一页、首页、尾页以及页跳转等链接。

(图片来源网络,侵删)
核心分页函数 GetPageList()
这是 DedeCMS 分页的核心,你只需要在模板文件中调用它即可。
函数原型
function GetPageList($list_len, $listitem="index,end,pre,next,pageno",$listdd="",$id="0")
参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
$list_len |
必填,显示的页码链接数量,设置为 5,则在当前页码左右各显示 2 个页码。 |
5 |
$listitem |
可选,需要显示的分页项,用英文逗号 分隔。 | "index,end,pre,next,pageno" |
$listdd |
可选,自定义分页项的样式,通常用于添加“跳转到”功能。 | "跳转" |
$id |
可选的ID,用于区分同一页面上的多个分页(不常用)。 | 0 |
$listitem 可选值列表
| 值 | 说明 |
|---|---|
index |
首页 |
pre |
上一页 |
next |
下一页 |
end |
尾页 |
pageno |
页码列表 |
option |
下拉跳转框 (需要配合 $listdd 使用) |
在模板文件中使用分页
分页代码通常放在两个地方:
- 列表页模板 (
/templets/default/list_*.htm): 显示文章列表和对应的分页。 - 文章页模板 (
/templets/default/article_*.htm): 显示单篇文章的上下篇分页。
示例1:列表页分页
假设你的列表页模板是 /templets/default/list_article.htm。
-
在需要显示分页的地方(通常在文章列表循环
{dede:list}之后)调用函数。
(图片来源网络,侵删) -
基本用法(显示常用项):
<div class="dede_pages"> <ul> {dede:pagelist listsize='5' listitem='index,end,pre,next,pageno'/} </ul> </div>- 注意:在模板标签中,参数名是
listsize而不是函数中的$list_len,listitem参数名相同。 listsize='5'等同于函数中的$list_len=5。listitem='index,end,pre,next,pageno'是最常用的组合,包含了所有基本导航。
- 注意:在模板标签中,参数名是
-
完整用法(包含跳转功能):
<div class="dede_pages"> <ul> {dede:pagelist listsize='5' listitem='index,end,pre,next,pageno,option' listdd='跳转至第<input type="text" name="pageno" style="width:20px;height:15px;text-align:center;" value="{dede:field.page/}" /> 页 <input type="submit" name="imageField" value="GO" />'/} </ul> </div>- 这里添加了
option和listdd,生成了一个输入框和按钮,允许用户直接跳转到指定页码。
- 这里添加了
示例2:文章页分页(上下篇)
在文章页模板 (/templets/default/article_*.htm) 中,通常使用 dede:prenext 标签来显示上下篇文章。
<div class="prenext">
{dede:prenext get='pre'/} <!-- 上一篇 -->
{dede:prenext get='next'/} <!-- 下一篇 -->
</div>
自定义分页样式(CSS)
默认情况下,DedeCMS 生成的分页 HTML 结构如下:

(图片来源网络,侵删)
<div class="dede_pages">
<ul>
<li><a href="...">首页</a></li>
<li><a href="...">上一页</a></li>
<li><a href="...">1</a></li>
<li><a href="...">2</a></li>
<li class="thisclass"><span>3</span></li> <!-- 当前页 -->
<li><a href="...">4</a></li>
<li><a href="...">5</a></li>
<li><a href="...">下一页</a></li>
<li><a href="...">末页</a></li>
<!-- 跳转框 -->
<li>跳转至第<input type="text" name="pageno" value="3" /> 页 <input type="submit" name="imageField" value="GO" /></li>
</ul>
</div>
你可以通过 CSS 来美化它,在你的 CSS 文件中添加以下样式:
/* 分页容器 */
.dede_pages {
text-align: center;
margin: 20px 0;
font-size: 14px;
}
/* 分页列表 */
.dede_pages ul {
display: inline-block; /* 让列表在同一行 */
list-style: none;
padding: 0;
margin: 0;
}
/* 分页项 */
.dede_pages ul li {
float: left; /* 让列表项横向排列 */
margin: 0 5px;
}
/* 分页链接 */
.dede_pages ul li a {
display: block;
padding: 5px 10px;
border: 1px solid #ddd;
color: #333;
text-decoration: none;
border-radius: 3px;
}
/* 鼠标悬停效果 */
.dede_pages ul li a:hover {
background-color: #f8f8f8;
border-color: #999;
}
/* 当前页样式 */
.dede_pages ul li.thisclass span {
display: block;
padding: 5px 10px;
background-color: #007bff;
color: #fff;
border: 1px solid #007bff;
border-radius: 3px;
cursor: default;
}
/* 跳转框样式 */
.dede_pages ul li input[type="text"] {
width: 40px;
height: 26px;
border: 1px solid #ddd;
text-align: center;
margin: 0 5px;
}
.dede_pages ul li input[type="submit"] {
padding: 0 10px;
height: 28px;
border: 1px solid #ddd;
background-color: #f8f8f8;
cursor: pointer;
}
常见问题与修改
问题1:如何修改分页显示的文字(如“首页”改为“Home”)?
你需要修改 DedeCMS 的核心文件,操作前请务必备份!
- 打开文件
/include/arc.listview.class.php。 - 在文件中搜索
GetPageList函数。 - 找到类似
$maininfo = "<li><a href='".$this->GetFirstPage()."'>首页</a></li>";的代码。 - 将其中的文字(如“首页”、“上一页”、“下一页”、“末页”)修改为你想要的文字。
问题2:如何修改分页的 HTML 结构?
同样,你需要修改 /include/arc.listview.class.php 文件中的 GetPageList 函数,这个函数内部拼接了最终的 HTML 字符串,你可以根据你的需求,修改 $listitem 对应的代码块,来改变生成标签的结构,例如给 li 添加不同的 class 等。
问题3:分页不显示或样式错乱?
- 检查标签:确保
{dede:pagelist}标签正确放置在{dede:list}循环之后。 - 检查CSS:确认你的 CSS 选择器正确,并且没有与网站其他样式冲突,使用浏览器开发者工具(F12)检查分页元素的最终样式。
- 检查缓存:清除 DedeCMS 后台和浏览器缓存后刷新页面。
| 任务 | 方法 |
|---|---|
| 在列表页显示分页 | 在模板中使用 {dede:pagelist listsize='5' listitem='index,end,pre,next,pageno'/} |
| 添加页码跳转 | 在 listitem 中加入 option,并用 listdd 定义跳转框的 HTML |
| 美化分页样式 | 编写 CSS 选择器,如 .dede_pages ul li a |
| 修改分页文字 | 编辑 /include/arc.listview.class.php 文件中的 GetPageList 函数 |
| 显示上下篇 | 在文章页使用 {dede:prenext get='pre'} 和 {dede:prenext get='next'} |
希望这份详细的指南能帮助你完全掌握 DedeCMS 的分页功能!
