2013-10-21 7 views
6

Auf der Wagenseite gibt es die folgende foreach-Schleife:

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

} 

Ich brauche die Produktoptionen für diese Elemente zu bekommen, ich habe ein paar Methoden versucht, aber ich bin Ich kann die benötigten Ergebnisse nicht abrufen.

Ich habe versucht:

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

Und:

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

es noch andere Funktionen, die ich verwenden könnte?

+2

Sie die Antwort nicht wissen, aber wenn man nach einer Methode suchen, versuchen: 'var_dump (get_class_methods (get_class ($ item)));' - Sie werden Holen Sie sich ein Array aller Methoden (keine magischen Methoden) der Klasse. –

+0

Sehr praktisch zu wissen, danke @StefanBrendle – Karl

+0

@Karl: Fügen Sie den Typ (das ist der Klassenname) zu Ihrer Frage, um es zu verbessern. – hakre

Antwort

21

Versuchen Sie es mit den Einstieg:

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

Sie können keine Optionsliste auf cart.phtml erhalten, müssen Sie bearbeiten/aktualisieren unten Datei für Optionsliste:

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

Hoffe, es hilft!

0

Vielleicht so:

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

Das könnte Sie in die richtige Richtung ...

$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

wird leer in $ product-> hasOptions() –

0

Die aktuelle Antwort, wie es steht ist ein No-Go für mich. Was immer $_item ist, darf die getProduct() Methode nicht haben.

Auf der anderen Seite haben Sie wahrscheinlich eine id zur Verfügung, die Sie direkt von laden können. In meinem Beispiel musste ich das Produktobjekt von einem Artikel in $_items = $this->helper('catalog/product_compare')->getItemCollection() abrufen.

Dies ermöglicht es mir, zu verwenden: <?php $product = Mage::getModel('catalog/product')->load($_item->getId()) ?>

Verwandte Themen