【问题标题】:Prestashop: Get id of parent categoryPrestashop:获取父类别的 id
【发布时间】:2012-06-03 03:12:33
【问题描述】:

我在编写我的第一个 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

标签: smarty prestashop


【解决方案1】:

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

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

希望这会有所帮助!

【讨论】:

  • 如何将此代码添加到我的主题的 header.tpl 模板文件中的 smarty 代码中?
猜你喜欢
  • 2020-12-06
  • 2020-03-05
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2016-05-15
  • 2013-05-21
相关资源
最近更新 更多