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.

È stato utile?

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: (

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top