PbootCMS TAG 标签分页地址栏参数无限叠加问题及解决方案

COS、CDN

在使用 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 参数。

具体步骤

  1. 找到文件路径:

    • 文件路径:core\view\Paging.php
  2. 定位代码行:

    • 找到 buildBasicPage 方法中的以下代码:
      php
       
      $qs = preg_replace('/[&\?]?page=([0-9]+)?/i', '', $qs);
  3. 添加代码:

    • 在上述代码下方添加以下代码:
      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; } // 其他代码... }

详细说明

  1. 正则表达式处理:
    • preg_replace('/[&\?]?page=([0-9]+)?/i', '', $qs);:这段代码的作用是从 URL 查询字符串中移除 page 参数。
  2. 条件判断:
    • if (C == 'Tag') { ... }:检查当前控制器是否为 Tag 控制器。
    • 如果是 Tag 控制器,则将 $qs 设置为 false,即不带任何查询字符串参数。
COS、CDN
热门