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

Prestashop分页跳转后分类描述丢失,咨询对应的负责控制器

Prestashop分类页分页后描述消失问题解决方案

负责该功能的控制器

你要找的核心控制器是CategoryController(默认路径为controllers/front/CategoryController.php),它继承自你找到的ProductListingFrontController.php,分类描述的加载、模板赋值逻辑默认都在该控制器的initContent方法中。

问题根因排查方向

你遇到的切换分页后描述消失、返回第一页描述也为空的问题,常见原因有两类:

  • 二开/主题自定义逻辑限制了仅第一页加载分类描述:部分开发者会在CategoryController中加入分页判断,仅当page参数为1时才将分类描述赋值给模板,你可以先在该控制器中搜索分类描述相关的赋值代码(一般对应模板变量$category.description),查看是否存在分页判断逻辑,存在的话删除该判断即可。
  • AJAX分页逻辑仅替换商品列表片段:如果你的主题开启了AJAX分页功能,默认分页请求只会返回商品列表的HTML片段,替换页面中#js-product-list和#js-product-list-bottom节点时会直接清空原有分类描述内容,返回第一页时调用的也是AJAX接口而非整页刷新,自然也不会加载描述。

你贴出的这段分页逻辑仅处理商品分页的导航参数生成,和分类描述加载无关,无需修改:

ProductSearchQuery $query,
ProductSearchResult $result
) {
    $pagination = new Pagination();
    $pagination
        ->setPage($query->getPage())
        ->setPagesCount(
            (int) ceil($result->getTotalProductsCount() / $query->getResultsPerPage())
        )
    ;

    $totalItems = $result->getTotalProductsCount();
    $itemsShownFrom = ($query->getResultsPerPage() * ($query->getPage() - 1)) + 1;
    $itemsShownTo = $query->getResultsPerPage() * $query->getPage();

    $pages = array_map(function ($link) {
        $link['url'] = $this->updateQueryString(array(
            'page' => $link['page'] > 1 ? $link['page'] : null,
        ));

        return $link;
    }, $pagination->buildLinks());

    //Filter next/previous link on first/last page
    $pages = array_filter($pages, function ($page) use ($pagination) {
        if ('previous' === $page['type'] && 1 === $pagination->getPage()) {
            return false;
        }
        if ('next' === $page['type'] && $pagination->getPagesCount() === $pagination->getPage()) {
            return false;
        }

        return true;
    });

    return array(
        'total_items' => $totalItems,
        'items_shown_from' => $itemsShownFrom,
        'items_shown_to' => ($itemsShownTo <= $totalItems) ? $itemsShownTo : $totalItems,
        'current_page' => $pagination->getPage(),
        'pages_count' => $pagination->getPagesCount(),
        'pages' => $pages,
        // Compare to 3 because there are the next and previous links
        'should_be_displayed' => (count($pagination->buildLinks()) > 3),
    );
}

修复方案

  1. 若不需要AJAX分页:直接在主题配置中关闭AJAX分页功能,走原生整页刷新即可解决。
  2. 若需要保留AJAX分页:
    • 先修改CategoryController中分页请求的响应逻辑,在返回商品列表数据的同时,额外返回分类描述的渲染结果
    • 再修改前端分页的JS逻辑,收到请求后将分类描述内容插回#js-product-list-bottom节点的对应位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:07