Question

Lors du chargement d'une collection, comment puis-je obtenir le texte de la valeur de l'attribut (et pas seulement le numéro de l'option) lorsqu'il s'agit d'un attribut déroulant.

Exemple:

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

Lorsque vous utilisez ce code, les identifiants d'option s'affichent pour color tel que:123, 117, etc.et non les valeurs du texte (comme :rouge, vert, etc.)

Habituellement, nous parcourons chaque produit et obtenons le texte de l'attribut, mais comme celui-ci est utilisé dans le Catalogue->Gérer les produits page Je recherche une solution alternative.

Était-ce utile?

La solution

Je suppose que vous utilisez d'abord Mage_Catalog_Model_Resource_Product_Collection et pas simplement la ressource comme indiqué dans votre question.

Maintenant, je suppose également que vous parcourez les résultats de votre collection.

foreach($collection as $product) {}

Une fois que vous avez l'objet produit, vous pouvez appeler la fonction getAttributeText et spécifiez le code d'attribut.Cela chargera l'attribut pour obtenir la source, puis le texte de l'option en fonction des données d'attribut attribuées au produit.

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

Donc, si vous parcourez votre collection, vous devez simplement appeler :

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

Autres conseils

Essayez d'ajouter "_value" après le nom de l'attribut comme ceci :

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

Si vous utilisez des tables plates pour les produits, vous pouvez consulter la table de base de données catalog_product_flat_1 pour voir les attributs disponibles, je crois.

Avez-vous besoin de trier par valeurs ?Sinon, vous pouvez sélectionner toutes les options d'attribut en tant que $colors hachez avec une (!) requête, puis affichez-les comme $colors[$product->getColor()]

C'est probablement plus rapide que de sélectionner chaque valeur dans la boucle ou de créer des jointures supplémentaires, mais cela ne fonctionne pas pour le tri des collections :(

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top