PbootCMS TAG 标签分页地址栏参数无限叠加问题及解决方案
在使用 PbootCMS 的 TAG 标签进行分页时,点击分页链接会导致 URL 参数无限叠加,例如 URL 变为 /tag/PB教程?PB教程&PB教程&PB教程&page=2。这通常是由于分页代码在处理 URL 参数时没有正确处理 target=tag 参数的情况。以下是详细的解决方案。
问题描述
当在 TAG 标签的分页结果中点击分页链接时,URL 参数会不断叠加,导致 URL 非常冗长且不正确。例如:
/tag/PB教程?PB教程&PB教程&PB教程&page=2原因分析
PbootCMS 的分页代码在处理 URL 参数时没有正确处理 target=tag 参数的情况,导致每次分页请求时重复添加相同的参数。
解决方案
通过修改 core\view\Paging.php 文件中的 buildBasicPage 方法,确保在 tag 控制器中不带多余的 URL 参数。
具体步骤
-
找到文件路径:
- 文件路径:
core\view\Paging.php
- 文件路径:
-
定位代码行:
- 找到
buildBasicPage方法中的以下代码:php$qs = preg_replace('/[&\?]?page=([0-9]+)?/i', '', $qs);
- 找到
-
添加代码:
- 在上述代码下方添加以下代码:
php
if (C == 'Tag') { //@cms88 优化 TAG分页 URL地址叠加 $qs = false; }
- 在上述代码下方添加以下代码:
修改后的代码示例
以下是修改后的 buildBasicPage 方法的部分代码示例:
php
public function buildBasicPage()
{
// 其他代码...
$qs = preg_replace('/[&\?]?page=([0-9]+)?/i', '', $qs);
if (C == 'Tag') { //@cms88 优化 TAG分页 URL地址叠加
$qs = false;
}
// 其他代码...
}详细说明
- 正则表达式处理:
preg_replace('/[&\?]?page=([0-9]+)?/i', '', $qs);:这段代码的作用是从 URL 查询字符串中移除page参数。
- 条件判断:
if (C == 'Tag') { ... }:检查当前控制器是否为Tag控制器。- 如果是
Tag控制器,则将$qs设置为false,即不带任何查询字符串参数。

扫码添加技术【解决问题】
专注企业网站建设、网站安全16年。
承接:企业网站建设、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18580530

浙公网安备 33010602011771号