在使用DedeCMS程序时,文章或图集模型的内容页分页功能可能会遇到一个问题。如果内容页分页过多,例如达到80页,那么默认的分页标签 `{dede:pagebreak/}` 会将所有分页都显示出来。这不仅可能导致网页模板被撑破,还会影响用户体验。
虽然可以通过CSS控制(如 `overflow:hidden`)来解决模板被撑破的问题,但这显然不是最佳方案,因为访问者将无法方便地浏览接下来的页面。为了解决这一问题,可以通过修改代码实现更友好的分页显示效果。
例如,当总共有50个分页时,通过修改代码可以实现以下分页显示形式:
- 在第一页时:共50页: 上一页 1 2 3 4 5 6 7 8 9 10 下一页
- 在第10页时:共50页: 上一页 6 7 8 9 10 11 12 13 14 下一页
这种显示方式既简洁又实用。

### 修改步骤 #### 第一步:定位文件 需要修改的核心文件位于 `include/arc.archives.class.php`。
#### 第二步:修改动态页面分页函数 查找函数 `function GetPagebreakDM($totalPage,$nowPage,$aid)`(动态页面分页函数),找到以下代码片段:

for($i=1;$i<=$totalPage;$i++)
    
将其替换为以下代码:

$total_list=10;
if($nowPage >= $total_list) {
    $i = $nowPage-4;
    $total_list = $nowPage+4;
    if($total_list >= $totalPage) $total_list = $totalPage;
} else {
    $i=1;
    if($total_list >= $totalPage) $total_list = $totalPage;
}
for($i;$i<=$total_list;$i++)
    
#### 第三步:修改静态页面分页函数 继续查找函数 `function GetPagebreak($totalPage,$nowPage,$aid)`(静态页面分页函数),同样找到以下代码片段:

for($i=1;$i<=$totalPage;$i++)
    
将其替换为与动态页面分页函数相同的代码:

$total_list=10;
if($nowPage >= $total_list) {
    $i = $nowPage-4;
    $total_list = $nowPage+4;
    if($total_list >= $totalPage) $total_list = $totalPage;
} else {
    $i=1;
    if($total_list >= $totalPage) $total_list = $totalPage;
}
for($i;$i<=$total_list;$i++)
    

### 注意事项 1. `$total_list=10;` 表示首个分页显示10个分页地址。可以根据需求调整此值。
2. `-4 +4` 的设置决定了当前页前后显示的分页数量。例如,在第一页时显示1-10;在第10页时显示6-14。
3. 动态页面分页函数和静态页面分页函数都需要修改。如果只修改动态页面分页函数,则仅支持DedeCMS 5.31版本;若同时修改两个函数,则可兼容DedeCMS 5.6和最新版5.7。
通过以上修改,不仅可以避免分页过多导致的模板撑破问题,还能提升用户体验,让分页更加直观和便捷。这种方法特别适合需要处理大量分页内容的网站,值得尝试。