2012-05-28 68 views
1

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

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

我正在使用prestashop 1.4。

感谢您的关注。

+1

这取决于你需要的地方,知道你需要修改哪个控制器。它是为了一个模块,还是在你需要的页面上? – romainberger

+0

是啊对不起,也许我忘了提及,我想这在类别页面中,如果是在子类别中,那么我想获得父类别ID –

回答

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)是否为主要类别。如果不是,它会在数据库中查找父类别。

我真的不喜欢使用数组来手动存储主要类别,但它的工作原理。

希望这会有所帮助!

+0

如何将此代码添加到我的主题header.tpl模板文件中的smarty代码? –

相关问题