首页 文章

Prestashop 1.5.6.2显示该类别中的错误产品(FrontOffice)

提问于
浏览
3

我正在使用prestashop 1.5.6并通过第三方库(我写的)将批量类别和产品操作制作成mysql . 一切都很好,直到我的一些产品显示错误的类别 . 例如,我有一个A类产品;但是,当我去B类时,A产品也在那里 . 我认为我的 ps_category_product 表与位置列有问题 . 我正在使用下面的代码更新此表;

$sqlFirst = 'SELECT id_product, id_category_default, xml_id_product FROM ps_shop_product';
$queryFirst = $db->prepare($sqlFirst);
$queryFirst->execute();
while ($rowFirst = $queryFirst->fetch(PDO::FETCH_OBJ)){ 
    $sqlProductAddCatPosFirst = '
        INSERT INTO ps_shop_category_product
        (id_product, id_category, position)
        VALUES 
        (?, ?, ?)
        ';
    // ps_shop_category_product Sql sorgumuzu hazırlayalım
    $queryProductAddCatPosFirst = $db->prepare($sqlProductAddCatPosFirst);
    $queryProductAddCatPosFirst->bindParam(1, $rowFirst->id_product, PDO::PARAM_INT);
    $queryProductAddCatPosFirst->bindParam(2, $rowFirst->id_category_default, PDO::PARAM_INT);
    $queryProductAddCatPosFirst->bindParam(3, $rowFirst->id_product, PDO::PARAM_INT);
    // ps_shop_category_product Hazır Sql sorgumuzu çalıştıralım
    $queryProductAddCatPosFirst->execute();
}

但是 Backoffice > Products > Filter By Category 标签上的一切都很好 . 它显示了类别下的正确产品 . 前台是否有任何具体细节?如果我截断表 (ps_category_product) ,我的产品不会在Front Office的类别中显示 . 我错过了什么?

Any help will greatly appricated.

Update

在@bcsteeve评论之后,我从BackOffice创建了一个样本类别,所有产品都以正确的类别显示 . 当我看到我的mysql表上的变化;只有 ps_category 表更改了一些值 nleftnright 列 .

在我的简单web服务中,我将 nleftnright 分配给0(零) . 但现在他们有一些不同于0(零)的值 .

现在我认为我的问题是重新计算 ps_category 表的层次结构 .

是否有任何特定的prestashop核心控制器和/或方法可以重新计算ps_category表上的nleft和nright值?因为我不希望在我的webservice更新我的产品和类别后手动添加类别 .

提前致谢!

3 回答

  • 0

    您可以使用以下代码重新生成 ps_category 表的 nleftnright 列:

    require_once '../config/config.inc.php';
    
    try {
      Category::regenerateEntireNtree();
    } catch (CategoryException $e) {
      echo $e->getMessage();
    }
    
  • 0

    我在prestashop 1.6中遇到了同样的问题 . 如果选择了文件缓存,请关闭缓存 . 缓存在几分钟后打开,并且全部恢复工作 .

  • 0

    我有一个类似的问题,类别页面中的产品列表是错误的,我升级了分层导航模块,它已经修复了问题,我想我应该为这个模块创建一些索引crons

相关问题