You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrestaShop分类页分页上一页按钮href异常追加字符问题求助

PrestaShop分类页分页上一页按钮异常解决方案

第一步:定位Pagination.php链接构建逻辑

  • 文件默认路径为/classes/Pagination.php,找到生成上一页链接的代码段,重点排查三类常见错误:
    1. 拼接参数时substr/rtrim等字符串处理函数的长度参数配置错误,导致多截取/多拼接了单个字符
    2. 参数遍历拼接时循环终止条件配置错误,把末尾多余的字符变量拼入了链接
    3. 多语言适配逻辑异常,将单字符语言标识错误追加到了参数末尾
  • 对比官方同版本Pagination.php默认代码,若存在二次修改先回滚测试,确认是否为自定义修改导致的问题。

第二步:修正URL格式错误

你当前的页面URL本身存在语法错误:localhost/index.php?id_category=10&controller=category?resultsPerPage=18&page=2 中出现了2个?,合法URL仅第一个参数前缀用?,后续参数统一用&拼接,该格式错误会导致PrestaShop原生URL解析逻辑异常,读取resultsPerPage等参数时误将后续字符算入参数值。

  • 先修正你自定义JS的参数拼接逻辑,替换第二个?为&,修正后合法URL为localhost/index.php?id_category=10&controller=category&resultsPerPage=18&page=2,测试修正后分页链接是否恢复正常。

第三步:临时兜底修复方案

如果暂时无法定位核心代码问题,可使用JS强制覆盖方案解决,注意需在分页DOM渲染完成后执行:

document.addEventListener('DOMContentLoaded', function() {
  const prevBtn = document.querySelector('.pagination .prev a');
  if (prevBtn && window.location.search) {
    // 基于当前页面URL重新生成合法链接
    const urlObj = new URL(window.location.href);
    const currentPage = parseInt(urlObj.searchParams.get('page')) || 1;
    if (currentPage > 1) {
      urlObj.searchParams.set('page', currentPage - 1);
    } else {
      urlObj.searchParams.delete('page');
    }
    // 直接覆盖原有异常href
    prevBtn.setAttribute('href', urlObj.toString());
  }
});
  • 该方案完全绕过原生分页链接构建逻辑,不会受原有拼接错误影响。

第四步:版本适配排查

  • 若你使用的是PrestaShop 1.7.8以下的旧版本,该问题属于已知的分页组件bug,可直接升级到1.7.8及以上稳定版本修复,或下载对应版本的官方Pagination.php补丁替换现有文件。

内容的提问来源于stack exchange,提问作者Magikstah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:21:00