2015-04-04 5 views
6

Sto provando a verificare se il prodotto ha opzioni personalizzate o non in codice (il mio codice funziona con l'evento sales_order_place_after). Ho provato sotto il codice ma non restituisce nulla. $product->hasCustomOptions() e $product->hasOptions()come verificare che il prodotto abbia opzioni personalizzate?

prega fatemi sapere cosa mi manca.

+0

@Marius Hai risposto alla domanda simile qui http://stackoverflow.com/questions/25745879/product-has-a-custom-options-or-not-in-magento Quindi potrebbe essere che tu possa aiutarmi a – androidjunky

risposta

11

Ho riscontrato questo errore più volte di quanto tengo a contare. O $_product->hasOptions() o $_product->hasCustomOptions() restituisce sempre false. Ancora non so perché questo errore si verifica.

In ogni caso, è possibile ottenere lo stesso risultato attenendosi alla seguente procedura. Per i prodotti configurabili:

<?php if ($_product->getData('has_options')): ?> 
    <!-- do something --> 
<?php endif; ?> 

E per ottenere lo stesso risultato per prodotti semplici con opzioni personalizzate:

<?php if ($_product->getData('has_options') && ($_product->getTypeID() == 'simple')): ?> 
    <!-- do something --> 
<?php endif; ?> 

Mi auguro che aiuta un futuro avventuriero!


EDIT


La soluzione di cui sopra non funziona in loop quando l'opzione daticategoria piatta è abilitata in Magento, e noi non vogliamo ricaricare il prodotto all'interno della ciclo foreach !!

Invece, siamo in grado di verificare la presenza di opzioni personalizzate utilizzando il seguente Singleton all'interno del ciclo:

$opts = Mage::getSingleton('catalog/product_option')->getProductOptionCollection($_product); 
$optsSize = $opts->getSize(); 

if ($optsSize) { 
    ... // go go go 
} 
+1

ma perché $ _product-> hasOptions() non funzionerà?, sembra che questo sia il chiamata naturale da fare –

3

utilizzare il metodo

Problemi correlati