2015-10-23 62 views
0

我試圖在產品列表上顯示數量,組合等。到目前爲止,我已經知道它能夠很好地顯示組合,以便我可以從分配給產品的每個組中選擇一個屬性。Prestashop從id的獲取組合產品

現在,如何合併那些「屬性ID的」成組合產品,這樣我可以看到的價格,將其添加到購物車等

這是我的模塊來獲取組合

function hookdisplayProductOnList($params){ 
    $product=new Product($params['id_product']); 
    $combinations=$product->getAttributeCombinations($this->context->language->id); 

    $combArray = []; 
    $combArrayIds = []; 

    foreach($combinations as $k => $v) 
    { 
     if(!in_array($v["id_attribute"], $combArrayIds)) 
     { 
      $combArrayIds[] = $v["id_attribute"]; 
      $combArray[ $v["group_name"] ][] = $v; 
     } 
    } 

    $this->smarty->assign('combinations',$combArray); 
    return $this->display(__FILE__, 'combinations.tpl'); 
} 

這是我如何輸出組

{foreach $combinations as $k=>$comb} 

      <ul class="attribute-select" data-group="{$k}"> 
      {foreach from=$comb item=attr} 
       <li data-combId="{$attr.id_attribute}" title="{l s='+'} {convertPrice price=$attr.unit_price_impact}">{$attr.attribute_name}</li> 
      {/foreach} 
      </ul><br /> 


{/foreach} 

是否有任何幫助功能或類似的東西。像:

::GetByAttributes($product_id, [ attr_id1, attr_id2, attr_id3 ]); 
+0

也許我誤解了任務,但你已經有了'combinations'(又名「product_attribute」只包含「屬性」),這樣客戶可以從列表中選擇組合,你表演,並結合已有的價格等。我不確定你想從輔助函數中得到什麼結果? –

回答

1

從PRODUCT_ID和attribute_id的,你可以得到一個id_product_attribute的數組。我認爲那是你需要的?

$productId = 123; 
$attributeIds = array(123, 1234); 
$combinationId = (int) Product::getIdProductAttributesByIdAttributes(
    $productId, 
    $attributeIds 
); 
+0

雖然代碼只有答案可能會提供問題的解決方案,但某種形式的解釋將有助於使其成爲更有用的答案。 –