“下一页”链接的核心是由 DedeCMS 的分页函数 GetPageList() 生成的,理解了这个函数,你就能掌控分页的几乎所有方面。

核心原理:GetPageList() 函数
在 DedeCMS 的文章模板(通常是 article_article.htm)中,你会在文章内容下方找到类似这样的代码:
<div class="dede_pages">
<ul>
{dede:pagebreak/}
</ul>
</div>
这里的 {dede:pagebreak/} 标签就是用来调用分页链接的,它在后台被解析时,会自动调用 include/arc.archives.class.php 文件中的 GetPageList() 函数,然后生成我们看到的“上一页”、“1 2 3 4...”、“下一页”等链接。
修改“下一页”的链接文本(最常见)
默认情况下,“下一页”显示的文字就是“下一页”,如果你想改成“下一篇”、“Next >>”或者其他任何文字,你需要修改核心 PHP 文件。
操作步骤:

-
找到文件: 打开 DedeCMS 的安装目录,找到文件
include/arc.archives.class.php。 -
定位代码: 在该文件中,使用 Ctrl+F 搜索
GetPageList函数,然后找到生成“下一页”链接的代码行,通常在GetPageList()函数内部,你会看到类似这样的代码:// ... 其他代码 ... $listdd .= "<li><a href='".$purl."/$page".$geturl."'>".$this->config['pageno']."</a></li>\r\n"; // ... 生成数字页码的代码 ... if($this->PageNo != $totalpage) { $listdd .= "<li><a href='".$purl."/".($this->PageNo+1).$geturl."'>".$this->config['nextpage']."</a></li>\r\n"; } else { $listdd .= "<li>".$this->config['nextpage']."</li>\r\n"; } // ... 其他代码 ...关键就是这一行:
$this->config['nextpage'],这里的nextpage是一个配置项。 -
修改配置: 在
arc.archives.class.php文件中,搜索$this->config,你会在函数的开头附近找到配置的初始化部分,找到类似这样的代码块:
(图片来源网络,侵删)function GetPageList($listitem="info,index,pre,next,end") { $prepage = ""; $nextpage = ""; $prepagenum = $this->PageNo-1; $nextpagenum = $this->PageNo+1; if($listitem=="") $listitem="info,index,pre,next,end"; $maininfo = "<li><strong>".$this->TotalResult."</strong> ".$this->GetLang('pageunit')."</li>\r\n"; $purl = $this->GetCurUrl(); // 获取配置项 $cfg_ismake = $this->Fields['ismake']; $cfg_isjump = $this->Fields['isjump']; // 默认的分页文本配置 $this->config['prepage'] = "上一页"; $this->config['nextpage'] = "下一页"; $this->config['indexpage'] = "首页"; $this->config['endpage'] = "末页";你可以直接在这里修改默认值,例如将:
$this->config['nextpage'] = "下一页";修改为:$this->config['nextpage'] = "Next >>";或者,如果你想显示为“下一篇”,就改成:
$this->config['nextpage'] = "下一篇"; -
保存并更新缓存: 修改文件后,登录 DedeCMS 后台,在“系统” -> “一键更新站点” -> “更新HTML” -> “更新所有”,让修改生效。
修改“下一页”的链接样式
如果你想给“下一页”链接添加一个 CSS 类(class="next-btn")或者修改其 HTML 标签(例如从 <a> 标签变成 <span> 标签),你需要修改模板文件。
操作步骤:
-
找到模板文件: 打开文章内容模板
templets/你的默认模板目录/article_article.htm。 -
定位代码: 找到
{dede:pagebreak/}标签所在的位置。 -
修改代码: DedeCMS 的
{dede:pagebreak/}标签本身不支持直接添加属性,但你可以通过修改pagefunction.lib.php文件来实现,或者更简单粗暴的方法是完全自定义分页。方法 A:修改核心文件(不推荐,升级会覆盖) 文件:
include/arc.archives.class.php在GetPageList()函数中,找到生成nextpage的代码:$listdd .= "<li><a href='".$purl."/".($this->PageNo+1).$geturl."'>".$this->config['nextpage']."</a></li>\r\n";
你可以将其修改为:
$listdd .= "<li><a class='next-btn' href='".$purl."/".($this->PageNo+1).$geturl."'>".$this->config['nextpage']."</a></li>\r\n";
方法 B:在模板文件中自定义(推荐) 你可以不使用
{dede:pagebreak/},而是自己用 PHP 代码调用分页数据,这样灵活性最高。在
article_article.htm中,将{dede:pagebreak/}替换为:<div class="dede_pages"> <ul> {dede:field name='pagebreak' runphp='yes'} $list = @me; // 使用正则表达式匹配并替换下一页的链接 $pattern = '/(<li><a href="[^"]+">)下一页(<\/a><\/li>)/i'; $replacement = '$1<span class="next-btn">Next >></span>$2'; // 注意:这里只是替换文本,为了添加class,最好用下面的方法 // 更好的方法是找到整个<a>标签并替换 $pattern = '/<li><a href="[^"]+">下一页<\/a><\/li>/i'; if (preg_match($pattern, $list, $matches)) { $new_link = str_replace('下一页', '<span class="next-btn">Next >></span>', $matches[0]); @me = str_replace($matches[0], $new_link, $list); } else { @me = $list; } {/dede:pagebreak} </ul> </div>注意:模板里用
runphp处理分页字符串比较复杂且容易出错。最推荐、最稳定的方法还是情况一中的方法 A(修改arc.archives.class.php),因为它直接从数据源生成了你想要的 HTML 结构。
隐藏“下一页”链接
如果你想在某些条件下隐藏“下一页”链接(在最后一页时不显示),同样需要修改核心文件。
操作步骤:
-
找到文件:
include/arc.archives.class.php。 -
定位代码: 找到生成
nextpage的if判断语句:if($this->PageNo != $totalpage) { $listdd .= "<li><a href='".$purl."/".($this->PageNo+1).$geturl."'>".$this->config['nextpage']."</a></li>\r\n"; } else { $listdd .= "<li>".$this->config['nextpage']."</li>\r\n"; // 最后一页时,显示为不可点击的文本 }DedeCMS 的默认逻辑已经做得很好了:如果不是最后一页 (
$this->PageNo != $totalpage),就生成一个可点击的<a>链接;如果是最后一页,就只显示文本(不可点击)。如果你想在任何情况下都隐藏“下一页”链接,你可以将上述代码块注释掉或删除:
// 注释掉整个 nextpage 的生成逻辑 /* if($this->PageNo != $totalpage) { $listdd .= "<li><a href='".$purl."/".($this->PageNo+1).$geturl."'>".$this->config['nextpage']."</a></li>\r\n"; } else { $listdd .= "<li>".$this->config['nextpage']."</li>\r\n"; } */
总结与最佳实践
| 你的需求 | 推荐方法 | 修改文件 | 备注 |
|---|---|---|---|
| 修改“下一页”的文字 | 修改核心配置 | include/arc.archives.class.php |
最简单、最直接的方法。 |
| 给“下一页”加 CSS 类 | 修改核心 HTML 生成 | include/arc.archives.class.php |
在生成 <a> 标签时直接加上 class 属性。 |
| 完全自定义分页样式 | 在模板中自定义输出 | templets/你的模板目录/article_article.htm |
使用 {dede:field name='pagebreak' runphp='yes'},但较复杂。 |
| 隐藏“下一页”链接 | 修改核心逻辑 | include/arc.archives.class.php |
注释或删除生成 nextpage 的代码块。 |
重要提示:直接修改 include 目录下的核心文件(如 arc.archives.class.php)有一个缺点:当你升级 DedeCMS 时,这些修改会被新版本覆盖,在进行修改前,务必备份原文件,以便在升级后能快速恢复你的修改。
