Prestashop 1.5.6.2 在类别中显示错误的产品 (FrontOffice)
Prestashop 1.5.6.2 shows wrong products in the category (FrontOffice)
我正在使用 prestashop 1.5.6 并通过第 3 方库(我写的)将批量类别和产品操作放入 mysql。一切都很好,直到我的一些产品出现在错误的类别中。
例如,我有 A 类产品;
但是当我去 B 类时,A 产品也在那里。
我认为我的 ps_category_product
table with position 列有问题。
我正在用下面的代码更新此 table;
$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
选项卡上的一切都很好。
它在类别下显示正确的产品。 Front Office有具体的细节吗?如果我截断 table (ps_category_product)
,我的产品不会显示在前台的类别中。我错过了什么?
如有帮助将不胜感激。
更新
在@bcsteeve 发表评论后,我从 BackOffice 创建了一个示例类别,所有产品都显示在正确的类别中。当我查看 mysql table 上的变化时;只有 ps_category
table 更改了一些值 nleft
和 nright
列。
在我的简单网络服务中,我将 nleft
和 nright
分配给 0(零)。但现在它们有一些不同于 0(零)的值。
现在我认为我的问题是重新计算 ps_category
table 的层次结构。
Is there any specific prestashop core controller and/or method that
can recalculate nleft and nright values on ps_category
table?
Because i dont want to add category manually after my webservice is
update my products and categories.
提前致谢!
您可以使用以下代码重新生成 ps_category
table 的 nleft
和 nright
列:
require_once '../config/config.inc.php';
try {
Category::regenerateEntireNtree();
} catch (CategoryException $e) {
echo $e->getMessage();
}
我在 prestashop 1.6 中遇到了同样的问题。
如果您选择了文件缓存,请关闭缓存。
缓存在几分钟后打开并再次恢复工作。
我遇到了类似的问题,类别页面中的产品列表是错误的,我升级了分层导航模块并解决了问题,我想我应该为这个模块创建一些索引 crons
我正在使用 prestashop 1.5.6 并通过第 3 方库(我写的)将批量类别和产品操作放入 mysql。一切都很好,直到我的一些产品出现在错误的类别中。
例如,我有 A 类产品;
但是当我去 B 类时,A 产品也在那里。
我认为我的 ps_category_product
table with position 列有问题。
我正在用下面的代码更新此 table;
$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
选项卡上的一切都很好。
它在类别下显示正确的产品。 Front Office有具体的细节吗?如果我截断 table (ps_category_product)
,我的产品不会显示在前台的类别中。我错过了什么?
如有帮助将不胜感激。
更新
在@bcsteeve 发表评论后,我从 BackOffice 创建了一个示例类别,所有产品都显示在正确的类别中。当我查看 mysql table 上的变化时;只有 ps_category
table 更改了一些值 nleft
和 nright
列。
在我的简单网络服务中,我将 nleft
和 nright
分配给 0(零)。但现在它们有一些不同于 0(零)的值。
现在我认为我的问题是重新计算 ps_category
table 的层次结构。
Is there any specific prestashop core controller and/or method that can recalculate nleft and nright values on
ps_category
table? Because i dont want to add category manually after my webservice is update my products and categories.
提前致谢!
您可以使用以下代码重新生成 ps_category
table 的 nleft
和 nright
列:
require_once '../config/config.inc.php';
try {
Category::regenerateEntireNtree();
} catch (CategoryException $e) {
echo $e->getMessage();
}
我在 prestashop 1.6 中遇到了同样的问题。 如果您选择了文件缓存,请关闭缓存。 缓存在几分钟后打开并再次恢复工作。
我遇到了类似的问题,类别页面中的产品列表是错误的,我升级了分层导航模块并解决了问题,我想我应该为这个模块创建一些索引 crons