Sur la page du panier, il y a la boucle foreach suivante:
foreach($this->getItems() as $_item) {
}
Je dois connaître les options de produit pour ces éléments. J'ai essayé plusieurs méthodes mais je ne parviens pas à récupérer les résultats dont j'ai besoin.
J'ai essayé:
foreach($this->getItems() as $_item) {
print_r($_item->getProductOptions());
}
Et:
foreach($this->getItems() as $_item) {
print_r($_item->getOptionList());
}
Existe-t-il d'autres fonctions que je pourrais utiliser?
Essayez d'utiliser:
$_item->getProduct()->getTypeInstance(true)->getOrderOptions($_item->getProduct());
Cela pourrait vous aider à démarrer dans la bonne direction ...
$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>';
}
Peut-être comme ça:
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'];
}
}
}
La réponse actuelle, telle qu'elle se présente, est un non-départ pour moi. Quel que soit le code $_item
, il est possible que la méthode getProduct()
ne soit pas utilisée.
D'autre part, vous aurez probablement une id
disponible que vous pourrez charger directement. Dans mon exemple, je devais obtenir l'objet product à partir d'un élément dans $_items = $this->helper('catalog/product_compare')->getItemCollection()
.
Cela me permet d'utiliser: <?php $product = Mage::getModel('catalog/product')->load($_item->getId()) ?>