Frage

Wie kann ich beim Laden einer Sammlung den Attributwerttext (und nicht nur die Optionsnummer) abrufen, wenn es sich um ein Dropdown-Attribut handelt.

Beispiel:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color'); // color  is a dropdown attribute

Bei Verwendung dieses Codes werden die Options-IDs für angezeigt color wie:123, 117 usw.und nicht die Textwerte (wie:rotes, grünes etc.)

Normalerweise durchlaufen wir jedes Produkt und erhalten den Text für das Attribut, aber da dies in der verwendet wird Katalog-> Produkte verwalten seite Ich suche nach einer alternativen Lösung.

War es hilfreich?

Lösung

Ich gehe davon aus, dass Sie zuerst verwenden Mage_Catalog_Model_Resource_Product_Collection und nicht nur die Ressource, wie in Ihrer Frage angegeben.

Jetzt gehe ich auch davon aus, dass Sie die Ergebnisse Ihrer Sammlung durchlaufen.

foreach($collection as $product) {}

Sobald Sie das Produktobjekt haben, können Sie die Funktion aufrufen getAttributeText und geben Sie den Attributcode an.Dadurch wird das Attribut geladen, um die Quelle und dann den Optionstext basierend auf den dem Produkt zugewiesenen Attributdaten abzurufen.

public function getAttributeText($attributeCode)
{
return $this->getResource()
    ->getAttribute($attributeCode)
        ->getSource()
            ->getOptionText($this->getData($attributeCode));
}

Wenn Sie also Ihre Sammlung durchlaufen, müssen Sie einfach anrufen:

foreach ($collection as $product) {
    $color_value = $product->getAttributeText('color');
}

Andere Tipps

Versuchen Sie, "_value" nach dem Attributnamen wie folgt hinzuzufügen:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color_value'); // color  is a dropdown attribute

Wenn Sie flache Tabellen für Produkte verwenden, können Sie in der Datenbanktabelle catalog_product_flat_1 nach den verfügbaren Attributen suchen, glaube ich.

Müssen Sie nach den Werten sortieren?Wenn nicht, können Sie alle Attributoptionen als auswählen $colors hash mit einem(!) abfragen und sie dann als anzeigen $colors[$product->getColor()]

Wahrscheinlich ist es schneller als jeden Wert in der Schleife auszuwählen oder zusätzliche Verknüpfungen vorzunehmen, funktioniert aber nicht für die Sammlungssortierung :(

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top