家人们谁懂啊,上个月接了个老企业站的维护活,上来就撞了个PHPCMS前台分页失效的大坑,我跟那玩意斗了整整三天三夜,踩过的坑能绕我家小区三圈。说真的这PHPCMS就跟咱们父辈骑了十年的老电动车似的,皮实耐造油耗低,平时啥毛病没有,冷不丁就给你掉个链子,这次的分页失效就相当于刹车突然卡壳,你说闹心不闹心?今天我把phpcms前台分页失效修复的全流程给你们扒得明明白白,都是我踩坑踩出来的干货,再也不用到处搜半吊子教程浪费时间了。
很多人一碰到分页崩了就慌,上来就乱改代码,结果越改越乱,phpcms前台分页失效修复的第一步啊,得先搞清楚它是为啥犯病,我整理了常见的三种类型,你们对号入座就行:
这种是最常见的,很多人从网上下了个免费模板,换上去以后列表页点第二页直接404,或者翻来覆去都是第一页的内容。这就相当于你给老电动车换了个新座套,结果不小心碰到了电线接头,接触不良了,本质就是模板里的分页标签写错了。
有的朋友闲不住给网站改伪静态、改栏目URL规则,改完以后分页要么点不开,要么点开是乱码内容。这就相当于你给老电动车改了个线路,接错线了肯定跑不起来,本质就是规则不匹配,分页生成的链接根本不符合系统的识别逻辑。
这种最气人,前一天还好好的,第二天打开网站分页就不好使了,啥操作都没做。别慌,要么是缓存崩了,要么是老版本PHPCMS自带的分页函数有bug,就跟老电动车放了一晚上突然打不着火一样,大概率是零件老化的问题。
我这半年前前后后处理了不下5次phpcms前台分页失效的问题,总结出来这三步,按顺序走,基本没有搞不定的,别跳步啊,跳步踩坑了别来找我哭。
phpcms前台分页失效修复第一站,先去你当前用的模板文件夹找列表页模板,一般是category.html或者list.html,找到顶部的内容调用标签,一定要检查两个参数:有没有加page="$page",num参数的数值是不是和后台栏目设置的分页条数一致。
我第一次碰到这个问题的时候,就是模板里的标签没加page="$page",系统压根不知道你要分页,可不就只显示第一页内容么?给你们放个正确的标签模板,直接抄作业就行:
``` {pc:content action="lists" catid="$catid" num="15" order="id DESC" page="$page"} {/pc}这里要提醒一句,{$pages}这个分页输出的代码,必须放在{/pc}标签外面,放里面是调不出来的,我当初为了找这个问题,对着模板看了俩小时才反应过来,妥妥的血泪教训。

要是标签没问题还是不好使,接下来就查URL规则,这是phpcms前台分页失效修复的第二大核心。先去后台【内容】-【栏目管理】找到对应栏目,点修改看【URL规则】,一定要确认规则里有{$page}参数,而且位置是在后缀前面,比如你用伪静态的话,规则可以写成list-{$catid}-{$page}.html,千万别把{$page}写后缀后面去了,系统识别不出来的。
要是改了栏目规则还是不行,就去查你的服务器伪静态配置,有没有加分页的匹配规则,我当初就是改了伪静态只写了列表第一页的规则,漏了分页的,折腾了一天才发现。给你们放两个常用服务器的规则,直接复制进去就行:
Nginx规则参考:
``` rewrite ^/list-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&page=$2 last; ```Apache规则参考:
``` RewriteRule ^list-([0-9]+)-([0-9]+)\.html$ index.php?m=content&c=index&a=lists&catid=$1&page=$2 [L] ```说真的我当时搞定这步的时候,感觉整个人都通透了,你看啥事儿都是这样,看起来难,其实就是个一层窗户纸,捅破了啥都好办,生活也是这个理儿对吧,遇到坎儿别慌,慢慢捋总能顺过来。
要是前面两步都做了还是不好使,那大概率就是你用的PHPCMS版本太老,自带的分页函数有bug,尤其是超过10页之后就会乱码,这是老版本的通病,属于“零件老化”,phpcms前台分页失效修复的最后一步,就是给它换个新零件。
找到网站根目录下的/phpcms/libs/functions/global.func.php文件,搜索找到page()函数,把整个函数替换成官方修复后的版本就行,核心修复点是补上了页数大于10时的参数校验逻辑,我把核心修复段放下面:
``` function page($count, $page, $pagesize = 20, $url = '', $array = array(), $setpages = 10, $alias = '') { $page = intval($page); // 核心修复:页码异常自动校正 if($page <= 0) $page = 1; $pages = ceil($count / $pagesize); if($pages < 1) $pages = 1; if($page > $pages) $page = $pages; // 后面原有逻辑保留即可,不用额外修改 } ```改完这个函数,基本剩下的1%的问题也都搞定了,我上次帮朋友处理的一个站,啥都改了就是不好使,换完函数立马正常,比啥都灵。
都是我踩坑踩出来的血泪教训,记牢了能少走好多弯路:
反正我这大半年已经帮三个同行、两个客户处理过phpcms前台分页失效的问题了,这套流程走下来没有不好使的。说真的咱们做站的,碰到老系统的问题太正常了,别一碰到就慌,也别到处瞎找教程乱改,按我这个步骤来,最多俩小时就能搞定。要是你按我这方法还是没搞定,评论区留个言,我看到了能帮就帮,都是一路踩坑走过来的,能拉一把就拉一把,加油干,啥坑都能跨过去的!
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图