下面我将从 最简单快捷的修改方法 到 深度自定义和代码层面修改,为你提供一份详细的指南。

核心概念:分页由哪几部分组成?
在 DedeCMS 中,分页主要由三部分构成:
- 核心函数:
GetPageList()函数,这个函数负责生成分页的 HTML 代码,它位于/include/arc.archives.class.php文件中。这是修改分页逻辑和样式的核心文件。 - 模板标签:在列表页模板(通常是
list_article.htm)中,我们使用{dede:pagelist listitem='index,pre,next,end,option' listsize='5' /}这个标签来调用并显示分页。 - CSS 样式:分页最终呈现的样式,由你主题的 CSS 文件控制。
通过修改模板标签实现快速样式调整(推荐新手)
这是最安全、最简单的方法,它不涉及核心代码,仅通过修改模板标签和 CSS 来改变分页的外观。
修改分页显示项目
在列表页模板文件 示例:
默认可能是 示例:
这是实现自定义样式的关键,默认情况下, 步骤: 找到核心文件: 找到函数:在文件中搜索 复制函数到你的文件:为了不修改核心文件(方便后续升级),我们可以在当前模板的文件中覆盖这个函数。 修改函数内部逻辑:现在你可以直接修改 示例:修改为 Bootstrap 风格的分页 假设你已经复制了 注意:上面的代码只是一个示例,你需要根据原函数的逻辑进行调整,确保变量(如 如果你对所有列表页的分页都需要进行统一的、深度的修改,并且不担心后续升级时被覆盖,可以直接修改核心文件 缺点:每次 DedeCMS 升级时,这个文件很可能会被覆盖,导致你的修改丢失。优先推荐使用方法一。 如果你不想自己编写代码,市面上有很多 DedeCMS 的分页插件,它们提供了丰富的样式选择(如 Bootstrap、LayUI 等),通常只需要上传安装并启用即可,非常方便。 你可以在 DedeCMS 的官方论坛、插件市场或第三方资源网站上搜索“织梦分页插件”、“dede pagelist plugin”等关键词来找到合适的插件。 给新手的建议: 希望这份详细的指南能帮助你成功修改 DedeCMS 的分页!list_article.htm 中,找到 {dede:pagelist}
listitem:控制分页显示哪些部分。
index:首页pre:上一页pagelink:页码next:下一页end:尾页option:下拉跳转框info:页脚信息(如“共X页”){dede:pagelist listitem='index,pre,next,end,option' listsize='5' /}
如果你想显示更丰富的信息,可以修改为:
{dede:pagelist listitem='index,pre,option,next,end,info' listsize='5' /}修改分页显示数量
listsize:控制页码显示的数量。listsize='5' 表示当前页码左右各显示 5 个页码。{dede:pagelist listitem='index,pre,next,end,option' listsize='3' /} 这样页码数量就会变少。
自定义分页 HTML 结构和 CSS
GetPageList() 函数生成的 HTML 结构比较固定,如果你想彻底改变其样式,最直接的方法是覆盖这个函数。
/include/arc.archives.class.phpfunction GetPageList,找到这个函数的定义。
list_article.htm 的开头,加入以下代码(注意,这必须在 dede 标签之外):{dede:global name='phpmyadmin'/}
<?php
// 覆盖 GetPageList 函数,来自 include/arc.archives.class.php
// 你可以直接复制原函数,然后进行修改
function GetPageList($listitem="index,pre,next,end,option",$listsize="5")
{
// ... 这里是原函数的所有代码 ...
// 你需要在这里修改生成 HTML 的逻辑
}
?>
GetPageList 函数内部的代码,特别是生成 HTML 字符串的部分,来构建你想要的分页结构,你可以把默认的 <span> 和 <a> 标签换成 <li> 标签,以配合 Bootstrap 等框架。GetPageList 函数到 list_article.htm,然后找到生成 $plist 字符串的地方,将其修改为:// 在 GetPageList 函数内部,找到生成 $plist 的代码段,替换成类似下面这样的逻辑
$list_len = $listsize * 2 + 1;
$totalpage = ceil($this->TotalResult / $this->PageSize);
$plist = '';
if ($totalpage <= 1) {
return $plist;
}
$plist .= '<ul class="pagination">';
// 首页
if($listitem=='index' && $this->PageNo > 1){
$plist .= '<li><a href="'.str_replace('{page}', 1, $this->GetCurUrl()).'">首页</a></li>';
}
// 上一页
if($listitem=='pre' && $this->PageNo > 1){
$plist .= '<li><a href="'.str_replace('{page}', ($this->PageNo-1), $this->GetCurUrl()).'">上一页</a></li>';
}
// 页码
$page_no = $this->PageNo;
if($totalpage > $list_len){
$init_pageno = min($page_no - floor($listsize / 2), $totalpage - $listsize + 1);
$end_page = $init_pageno + $listsize - 1;
if($init_pageno < 1){
$init_pageno = 1;
}
}else{
$init_pageno = 1;
$end_page = $totalpage;
}
for($i=$init_pageno;$i<=$end_page;$i++){
if($page_no == $i){
$plist .= '<li class="active"><span>'.$i.'</span></li>';
}else{
$plist .= '<li><a href="'.str_replace('{page}', $i, $this->GetCurUrl()).'">'.$i.'</a></li>';
}
}
// 下一页
if($listitem=='next' && $this->PageNo < $totalpage){
$plist .= '<li><a href="'.str_replace('{page}', ($this->PageNo+1), $this->GetCurUrl()).'">下一页</a></li>';
}
// 尾页
if($listitem=='end' && $this->PageNo < $totalpage){
$plist .= '<li><a href="'.str_replace('{page'}, $totalpage, $this->GetCurUrl()).'">尾页</a></li>';
}
// 下拉跳转
if($listitem=='option'){
$plist .= '<li class="disabled"><span>共 '.$totalpage.' 页</span></li>';
$plist .= '<li><select onchange="location.href=this.options[this.selectedIndex].value;">';
for($i=1;$i<=$totalpage;$i++){
$selected = $i==$page_no ? 'selected' : '';
$plist .= '<option value="'.str_replace('{page}', $i, $this->GetCurUrl()).'" '.$selected.'>'.$i.'</option>';
}
$plist .= '</select></li>';
}
$plist .= '</ul>';
return $plist;
$this->PageNo, $this->TotalResult 等)的正确使用。
修改核心文件(不推荐,除非必要)
/include/arc.archives.class.php。
arc.archives.class.php。function GetPageList 函数。
使用现成的分页插件
总结与建议
方法
优点
缺点
适用人群
覆盖函数
安全(不修改核心文件)、灵活、可定制性高
需要一定的 PHP 基础,操作稍复杂
有一定开发能力,希望深度自定义的用户
修改核心文件
一次修改,全局生效
升级后易丢失,有风险
对所有页面有统一需求,且不打算频繁升级的用户
使用插件
简单快捷,样式丰富
可能与特定主题不兼容,有安全隐患
新手,或追求快速实现特定样式的用户
listitem 和 listsize,看看是否能满足你的基本需求。GetPageList 函数,并参考上面的示例进行修改。
