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
,即不带任何查询字符串参数。