在使用Dede程序构建网站时,文章或图集模型的内容页分页功能可能会遇到一个问题。当分页数量过多时(例如80页),Dede默认的内容分页标签 {dede:pagebreak/} 会将所有的分页都显示出来。这种情况下,网页模板可能被撑破,即使通过CSS控制(如使用overflow:hidden)可以解决视觉问题,但访问者无法方便地浏览接下来的页面。显然,这不是一个理想的解决方案。
幸运的是,在DedeCMS官方论坛上,有高手提供了一种解决方法,并且经过亲自测试,这种方法完全可行。例如,如果内容分为50个分页,修改代码后可以实现以下显示效果:
第一个分页情况: 共50页: 上一页 1 2 3 4 5 6 7 8 9 10 下一页
第10个分页情况: 共50页: 上一页 6 7 8 9 10 11 12 13 14 下一页
基本显示效果就是这样,能够动态调整分页范围,确保用户操作便捷。
以下是具体的解决方法:
芝麻通已经在DedeCMS 5.7sp1中测试可用,下面详细介绍解决步骤:
需要修改的文件位置: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++)
注意:$total_list=10; 表示首个分页显示10个分页地址。规律可以根据需求自行调整,比如 -4 和 +4 的设置。例如,在第一页时显示1到10,在第10页时显示前后4页,效果为6、7、8、9、10、11、12、13、14。
特别提醒:动态页面分页函数和静态页面分页函数都需要修改。如果只修改动态页面分页函数,则仅支持Dede 5.31版本;如果两个分页函数都修改,不仅可以支持Dede 5.6,还可以支持最新版Dede 5.7,因此建议同时修改。
通过以上步骤,已经能够较完美地解决分页过多的问题。