Prestashop:获取父类别的ID

时间:2012-05-28 20:11:06

标签: smarty prestashop

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

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

我正在使用prestashop 1.4。

感谢您的关注。

1 个答案:

答案 0 :(得分: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)是否为主要类别。如果没有,它会在数据库中查找父类别。

我对使用数组手动存储主要类别感到高兴,但它确实有效。

希望这有帮助!