2015-06-06 28 views
0

我正在构建我的第一个prestashop。我有一些产品具有影响价格的属性组合。在列表视图中,我想检测一个产品是否附加了多个组合,以便在价格之前显示“发件人”。Prestashop 1.6 product_list:获取附加属性组合的编号

我一直无法找到访问与product_list.tpl中的属性或组合有关的任何方法。 我在product.php中找到了一个函数,它可能适合我想要实现的功能。

public function hasAttributes() 
{ 
    if (!Combination::isFeatureActive()) 
     return 0; 
    return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' 
     SELECT COUNT(*) 
     FROM `'._DB_PREFIX_.'product_attribute` pa 
     '.Shop::addSqlAssociation('product_attribute', 'pa').' 
     WHERE pa.`id_product` = '.(int)$this->id 
    ); 
} 

从product_list.tpl我可以访问产品类中的其他东西,例如, '功能',我希望以类似的方式获得属性。
我能找到的唯一的地方“功能”被宣布为一个变量是在产品的控制,因为这种阵列的一部分:

$this->context->smarty->assign(array(... 

所以我认为这是走了,一个变量,点添加到路产品类别内的所需功能。但无论我在这里输入什么内容,都无法解决问题。我究竟做错了什么?这是否是正确的方法?

在此先感谢。

您可以在rhum-martinique.de

回答

0

浏览网站,你可以使用的方法ProductCore::getAttributeCombinaisons并与count功能

检查其结果这个功能添加到该文件/config/config.inc.php

function count_product_combinations($id_product) 
{ 
    $product = new Product($id_product); 
    return count($product->getAttributeCombinaisons(Context::getContext()->language->id)); 
} 

添加该代码到您的tpl文件:

{if count_product_combinations($product.id_product) > 1} 
    <span class="price-prefix">{l s='From'}</span> 
{/if} 
+0

感谢您的反馈。我已经用hasAttributes尝试过类似的东西,但没有骰子。不幸的是你的解决方案也没有工作:致命错误:调用一个非对象的成员函数getAttributeCombinaisons() – Boris

+0

你可以在pastebin中发布tpl代码吗? – UnLoCo

+0

发表:[product_list.tpl](http://pastebin.com/srUs7QnQ)。您的代码段位于105行,目前已注释掉。 – Boris