Comment obtenir l'attribut "étiquette d'option / texte d'attribut" ayant la "valeur d'attribut" (option_id)?

18

Supposons que j'ai un attribut qui est une collection d'options (liste déroulante / multisélection).

Je peux récupérer la valeur d'attribut pour un produit donné:

$store_id = [something];
$productId = [something];
// this is a select/multiselect
$attribute_code = [something]; 

$option_id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, $attribute_code, $store_id );
$option_label = ???

Maintenant, j'ai obtenu l'attribut option_id qui est une valeur numérique ...

... Quelle est la meilleure façon de charger l'étiquette d'attribut frontend pour ma valeur d'attribut? (sans charger le produit complet)

La solution remercie Marius :

// Not loading the product - just creating a simple instance
$product = Mage::getModel('catalog/product')
->setStoreId($store_id)
->setData($attribute_code,$option_id); 
$option_label = $product->getAttributeText($attribute_code);
Fra
la source
2
Pourquoi cette question est posée plusieurs fois par l'auteur exact et tous confondent les utilisateurs. Pouvons-nous marquer comme doublon comme ces questions sans réponses correctes? Cette question magento.stackexchange.com/questions/3003 donnée par l'auteur n'est pas une bonne réponse, mais pourquoi des votes positifs (et une réponse donnée)! Celui-ci magento.stackexchange.com/questions/976 est également le même. Peut-être que ma demande n'est pas correcte, mais une question, un auteur et aucune réponse. Merci de garder la qualité du site. Merci.
mageUz
Je me suis amélioré l'autre question en ajoutant une solution @Marius magento.stackexchange.com/questions/3003/...
Fra
1
Notez qu'au moins dans Magento CE 1.9 et EE 1.14 et ci-dessous, getAttributeText('value')ne fonctionne pas correctement si la getAllOptions()méthode de l'attribut renvoie des options arrangées avec des tableaux imbriqués, (exprimées comme un <optgroup>dans la liste déroulante.)
Tyler V.

Réponses:

49

En plus de votre code, mettez ceci:

$product = Mage::getModel('catalog/product')
                ->setStoreId($store_id)
                ->setBrand($brand_value); // not loading the product - just creating a simple instance
$brandLabel = $product->getAttributeText('brand');
Marius
la source
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
la source
1
J'ai confondu pour "étiquette d'attribut frontend", veuillez corriger la question. Pas "étiquette d'attribut", c'est "étiquette d'option" ou "texte d'attribut"
mageUz