Question

J'ai le code suivant. L'inconvénient du code est-il obtient toutes les options personnalisées pour un produit alors que je veux que les options qui sont sélectionnées par le client sur la page du produit.

$items = $order->getAllItems();
foreach ($items as $item) {
    $product = Mage::getModel('catalog/product');
    $prodSku = $item->getSku();
    $productId = $product->getIdBySku($prodSku);

    $product->load($productId);
    $product = $item->getProduct();
    $productId = $item->getItemId();
    $options = $product->getOptions();
    foreach($options as $_option) {
        echo $_option->getTitle();    
    }
}
Était-ce utile?

La solution

Vous pouvez essayer de reproduire la façon dont montre Magento les options de la page d'affichage de la commande.
Ici va:

$items = $order->getAllItems();
//or you can use $order->getAllVisibleItems();
//create an instance of the item renderer block.
$block = Mage::app()->getLayout()->createBlock('sales/order_item_renderer_default');
foreach ($items as $item) {
    //attach the item to the block
    $block->setItem($item);
    //get the options 
    $_options = $block->getItemOptions();
    foreach ($_options as $option) {
        $label = $option['label'];
        $textValue = $option['print_value'];
        //do something with $label and $textValue
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top