【发布时间】:2013-01-30 09:47:07
【问题描述】:
如何获得每种产品的配件? 在循环中:
{foreach $products as $product}
// 获取配件
{/foreach}
【问题讨论】:
-
请指定您要展示附件的页面/url/模板
-
我想要这里:modules/homefeatured/homefeatured.tpl
标签: product prestashop
如何获得每种产品的配件? 在循环中:
{foreach $products as $product}
// 获取配件
{/foreach}
【问题讨论】:
标签: product prestashop
问题是 HomeFeatured 模块不检索产品的附件,因此它们在模板中不可用。
你有选择:
我更喜欢第二个,更多的未来证明,如果需要,您可以在之后添加越来越多的逻辑。
无论您选择什么,这里修改后的 hookDisplayHome 代码都包含一个 Smarty 变量 $accessories 由产品的 id 索引:
public function hookDisplayHome($params) {
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));
// -- begin -->
$accessories = array();
foreach ($products as $product) {
$p = new Product($product['id_product'], false, (int)Context::getContext()->language->id);
$accessories[$product['id_product']] = $p->getAccessories((int)Context::getContext()->language->id);
}
// <-- end --
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
'accessories' => $accessories // <-- added --
));
return $this->display(__FILE__, 'homefeatured.tpl');
}
【讨论】:
获取属性组合的快速示例:
$product = new Product($id_product);
$comb = $product->getAttributeCombinations($this->context->cookie->id_lang);
if (sizeof($comb)){
foreach($comb AS $combination){
//do some stuff here
}
}
我认为这对另一个人会有所帮助
【讨论】:
我不确定它在 .tpl 文件中的外观,但对于 PHP,它是:
$product->getAccessories(intval($cookie->id_lang))
参考您的示例,它可能如下所示:
{foreach $products as $product}
{assign var='accessories' value=$product->getAccessories(intval($cookie->id_lang))}
{$accessories|@var_dump}
{foreach from=$accessories item=accessory}
{$accessory|@var_dump}
{/foreach}
{/foreach}
【讨论】: