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

Prestashop 1.5.6.2显示类别中的错误产品(FrontOffice),prestashop,prestashop-1.5,Prestashop,Prestashop 1.5,我正在使用prestashop 1.5.6,并通过第三方库(我编写的)在mysql中进行批量分类和产品操作。一切都很好,直到我的一些产品显示在错误的类别。 例如,我有一个类别的产品; 但是当我去B类的时候,A类产品也在那里。 我认为我的ps\u category\u product表中的position列有问题。 我正在用下面的代码更新此表 $sqlFirst = 'SELECT id_product, id_category_default, xml_id_product FROM ps_sh

我正在使用prestashop 1.5.6,并通过第三方库(我编写的)在mysql中进行批量分类和产品操作。一切都很好,直到我的一些产品显示在错误的类别。 例如,我有一个类别的产品; 但是当我去B类的时候,A类产品也在那里。 我认为我的
ps\u category\u product
表中的position列有问题。 我正在用下面的代码更新此表

$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
tab上一切正常。 它在类别下显示正确的产品。前台有什么具体细节吗?如果我截断表
(ps\U类别\U产品)
,我的产品不会显示在前台的类别中。我错过了什么

任何帮助都将不胜感激。

更新

在@bcsteeve的评论之后,我从BackOffice创建了一个示例类别,所有产品都显示在正确的类别中。当我查看mysql表上的更改时;只有
ps\u category
表更改了一些
nleft
nright
列的值

在我的简单Web服务中,我将
nleft
nright
赋值为0(零)。但是现在它们有一些不同于0(零)的值

现在,我认为我的问题是重新计算
ps\u category
表的层次结构

是否有任何特定的prestashop核心控制器和/或方法 是否可以重新计算
ps\u类别
表上的nleft和NRRIGHT值? 因为我不想在我的Web服务关闭后手动添加类别 更新我的产品和类别


提前谢谢

您可以使用以下代码重新生成
ps\u类别
表的
nleft
nright
列:

require_once '../config/config.inc.php';

try {
  Category::regenerateEntireNtree();
} catch (CategoryException $e) {
  echo $e->getMessage();
}

我在prestashop 1.6中也遇到了同样的问题。 如果选择了文件缓存,请关闭缓存。
几分钟后,缓存打开,然后重新开始工作。

我遇到了类似的问题,分类页面中的产品列表错误,我升级了分层导航模块,它已经解决了这个问题,我想我应该为这个模块创建一些索引cron

@yenshirak您可能会有所帮助(:
ps_category_product
中的
position
列决定了产品在类别中的位置,所以我认为这不会是问题所在。这是插入
ps_category_product
的唯一脚本吗?@yenshirak实际上我有一个大而复杂的脚本,正在添加类别和产品rom一些xml提要。
从id\u category=1的ps\u category\u产品中选择*
三次检查您是否已清除服务器和浏览器中的所有缓存。这对我很有帮助。如果没有,则手动添加一个虚拟类别并将产品移动到其中。该类别是否正确显示?