$ 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.