2013-10-21 17 views
6

獲取產品選項在購物車頁面有以下foreach循環:

foreach($this->getItems() as $_item) { 

} 

我需要得到這些項目的產品選擇,我已經嘗試了一些方法,但我無法檢索我需要的結果。

我已經試過:

foreach($this->getItems() as $_item) { 
    print_r($_item->getProductOptions()); 
} 

和:

foreach($this->getItems() as $_item) { 
    print_r($_item->getOptionList()); 
} 

是否還有其他的功能,我可以用?

+2

不知道答案,但如果你正在尋找一種方法,試試:'的var_dump(get_class_method(0函數get_class($項目)));' - 你會獲得該類的所有方法(不是魔術方法)的數組。 –

+0

非常方便知道,謝謝@StefanBrendle – Karl

+0

@Karl:將類型(即類名)添加到您的問題來改進它。 – hakre

回答

21

嘗試使用:

$_item->getProduct()->getTypeInstance(true)->getOrderOptions($_item->getProduct()); 
-7

不能在cart.phtml得到選項列表,你必須更新以下文件/編輯的選項列表:

app\design\frontend\YOUR_PACKAGE_NAME\YOUR_TEMPLATE_NAME\template\checkout\cart\item\default.phtml 

希望這將有助於!

0

也許是這樣的:

foreach($items as $product) { 
    $options = $product->getProduct()->getTypeInstance(true)->getOrderOptions($product->getProduct()); 
    if ($options) 
    { 
     if (isset($options['options'])) 
     { 
      $result = $options['options']; 
     } 
     if(count($result)>0){ 
      foreach($result as $key =>$value){ 
       $resultoption = $value['value']; 
     } 
    } 
} 
1

這可能讓你在正確的方向開始......

$productSku = "ABCDE"; 
$product = Mage::getModel('catalog/product'); 
$productId = $product->getIdBySku($productSku); 
$product->load($productId); 

/** 
* In Magento Models or database schema level, the product's Custom Options are 
* executed & maintained as only "options". So, when checking whether any product has 
* Custom Options or not, we should check by using this method "hasOptions()" only. 
*/ 
if($product->hasOptions()) { 
    echo '<pre>'; 

    foreach ($product->getOptions() as $o) { 
     $optionType = $o->getType(); 
     echo 'Type = '.$optionType; 

     if ($optionType == 'drop_down') { 
      $values = $o->getValues(); 

      foreach ($values as $k => $v) { 
       print_r($v); 
      } 
     } 
     else { 
      print_r($o); 
     } 
    } 

    echo '</pre>'; 
} 
+0

在$ product-> hasOptions()中變爲空白 –

0

目前的答案,因爲它代表對我來說是不行的。無論$_item是否可能沒有getProduct()方法。

另一方面,您可能有一個id可用,您可以直接從中加載。在我的示例中,我需要從$_items = $this->helper('catalog/product_compare')->getItemCollection()中的項目獲取產品對象。

這使我能夠使用:<?php $product = Mage::getModel('catalog/product')->load($_item->getId()) ?>