Ottenere il valore dell'attributo a discesa quando si utilizza Addattributetoselect
-
11-12-2019 - |
Domanda
Quando si caricano una raccolta Come posso ottenere il testo del valore dell'attributo (e non solo il numero di opzione) quando è un attributo a discesa.
Esempio:
$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color'); // color is a dropdown attribute
.
Quando si utilizza questo codice gli ID opzionali vengono visualizzati per color
come: 123, 117 ecc. E non i valori del testo (come: rosso, verde ecc.)
Di solito interacciamo attraverso ogni prodotto e ottieni il testo per l'attributo ma poiché questo viene utilizzato nel catalogo -> Gestisci prodotti Page Sto cercando una soluzione alternativa.
Soluzione
Suppongo di utilizzare in primo luogo Mage_Catalog_Model_Resource_Product_Collection
e non semplicemente la risorsa come indicato nella tua domanda.
Ora sto anche supponendo che tu stia passando attraverso i risultati della tua collezione.
foreach($collection as $product) {}
.
Una volta che si dispone dell'oggetto del prodotto è possibile chiamare la funzione getAttributeText
e specificare il codice di attributo.Questo caricherà l'attributo Ottieni la fonte e quindi il testo delle opzioni in base ai dati degli attributi assegnati al prodotto.
public function getAttributeText($attributeCode)
{
return $this->getResource()
->getAttribute($attributeCode)
->getSource()
->getOptionText($this->getData($attributeCode));
}
.
Quindi se stai passando attraverso la tua collezione devi semplicemente chiamare:
foreach ($collection as $product) {
$color_value = $product->getAttributeText('color');
}
. Altri suggerimenti
Prova ad aggiungere "_Value" dopo il nome dell'attributo come questo:
$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color_value'); // color is a dropdown attribute
.
Se si utilizza tabelle piatte per prodotti, è possibile cercare nella tabella del database del catalogo_product_flat_1 per vedere gli attributi disponibili, credo.
Hai bisogno di ordinare per i valori?In caso contrario, è possibile selezionare tutte le opzioni di attributo come hash $colors
con una (!) Query e quindi visualizzarle come $colors[$product->getColor()]
Probabilmente è più veloce di selezionare ogni valore nel ciclo o creare unisce extra, ma non funziona per l'ordinamento della raccolta: (