1

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

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

我正在使用 prestashop 1.4。

感谢您的关注。

4

1 回答 1

3

我在一个模块中使用了这段代码,你可能需要调整它,但基本上,父类别的 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) 是否是主要类别。如果没有,它会在数据库中查找父类别。

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

希望这可以帮助!

于 2012-05-29T11:20:25.683 回答