$ product-> getOptions () restituisce un risultato vuoto


9

Sto cercando di ottenere i dettagli del prodotto, incluso il valore delle opzioni personalizzate del prodotto in un blocco personalizzato che ho creato. Questo è il codice che ho usato nella pagina dei dettagli del prodotto e ha funzionato lì, ma quando provo ad usarlo nella pagina del blocco personalizzato ottieni Opzioni restituisce un valore vuoto.

if ($ _product-> getId ()) {  
    foreach ($ _product-> getOptions () come $ opt) {  
    echo $ optionType = $ opt-> getType ();  
      if ($ optionType == 'drop_down') {  
        $ valori = $ opt-> getValues ​​();  
        foreach ($ valori come $ v)
        {
     $ mydata = $ v-> getTitle ();      
print_r ($ mydata);    
        }
      }  
    }   
}

Sono nuovo di Magento, quindi non sono sicuro di cosa mi sto perdendo qui.
Qualcuno può darmi un suggerimento per favore
Grazie


Vedi questa risposta da un thread correlato.
cambio rapido il

Risposte:


2

Prova questo:

if (Mage::registry('current_product')) {
    $product = Mage::registry('current_product');
} else {
    $product = Mage::getSingleton('catalog/product');
}


if ($product->getId()) {
    if ($product->hasCustomOptions()) {
        foreach ($product->getOptions() as $option) {
            $optionType = $option->getType();
            if ($optionType == 'drop_down') {
                $values = $option->getValues();
                foreach ($values as $k => $value) {
                    print_r($value);
                }
            }

        }
    }
}

1
non funziona ... Quando stampo l'array $ prodct vengono mostrate tutte le informazioni tranne le opzioni personalizzate mentre lo stesso codice funziona bene nella pagina di visualizzazione del prodotto
Shivika Sharma

2

Il problema è che il prodotto non è completamente caricato nel blocco. Il load()metodo assicura che tutte le informazioni di un oggetto siano caricate. Se usi solo loadByAttribute()o una collezione, non è così.

Un esempio potrebbe essere:

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

Se si desidera visualizzare più prodotti, è necessario evitare di utilizzarli load()poiché ha un forte impatto negativo sulle prestazioni. Spiacenti, non posso aiutarti con l'aggiunta di opzioni a una raccolta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.