Prestashop:获取父类别的ID



我在编写我的第一个prestashop模板时遇到了这个问题。因此,我想做的是获取同一父类别下的所有子类别的列表。因此,运行foreach循环我需要发送父类别ID。在互联网上,没有太多关于prestas的编码,模块或其他东西的信息,但我找到了两种可能的解决方案。一个是:{$product->id_category_default}但只能在产品页面内工作(?也许我错了,有可能解决这个问题吗?另一种方式听起来有点绝望:{$cookie->last_visited_category}这个问题,它仅在您直接来自父类别时才有效,但在跟随直接链接或任何其他方式时失败。我也在考虑编写php函数,它发送MySQL查询并返回父类别ID,但这是最佳方法吗?此外,我还没有尝试用smarty编写自己的php函数,似乎它以与仅调用函数不同的方式唤醒。

所以总而言之,有没有人知道如何在没有单独的 php 函数的情况下获取父类别 id,如果它如此绝望,在哪里以及如何为 smarty 定义自己的 php 函数以及如何调用它们。

我正在使用prestashop 1.4。

感谢您的关注。

我已经在模块中使用了这段代码,您可能需要对其进行调整,但基本上,父类别的 id 存储在数据库中。

$parentCategoryList = array(2, 3, 4, 5);
if(!in_array($id_category, $parentCategoryList)){
    $parentCategory = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
        SELECT DISTINCT c.id_parent
        FROM '._DB_PREFIX_.'category c
        WHERE c.id_category = '.(int)($id_category)
    );
    $id_category_parent = $parentCategory[0]['id_parent'];
}
else{
    $id_category_parent = $id_category;
}

在我的代码中,$parentCategoryList存储我的主要类别的 id(将其更改为您的值)。然后它会检查您正在查看的类别($id_category)是否是主要类别。如果没有,它将在数据库中查找父类别。

我对使用数组手动存储主要类别并不满意,但它有效。

希望这有帮助!

最新更新