Jak uzyskać atrybut „etykieta opcji / tekst atrybutu” mający „wartość atrybutu” (identyfikator_opcji)?

18

Załóżmy, że mam atrybut, który jest zbiorem opcji (rozwijane / wielokrotnego wyboru).

Mogę pobrać wartość atrybutu dla danego produktu:

$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 = ???

Teraz mam atrybut option_id, który jest wartością liczbową ...

... Jaki jest najlepszy sposób załadowania etykiety atrybutu frontonu dla mojej wartości atrybutu? (bez ładowania pełnego produktu)

Rozwiązanie dzięki 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
źródło
2
Dlaczego to pytanie jest podane kilka razy przez dokładnego autora i wszyscy wprowadzają użytkowników w błąd. Czy możemy oznaczyć jako duplikat takie jak te pytania bez poprawnych odpowiedzi? To magento.stackexchange.com/questions/3003 pytanie zadane przez autora nie jest poprawną odpowiedzią, ale po co głosować pozytywnie (i podać własną odpowiedź)! Ten jeden magento.stackexchange.com/questions/976 jest również taki sam. Może moja prośba jest nieprawidłowa, ale jedno pytanie, jeden autor i brak odpowiedzi. Zachowaj jakość strony. Dzięki.
mageUz
Poprawiłem inne pytanie dodając @Marius rozwiązanie magento.stackexchange.com/questions/3003/…
Fra
1
Zauważ, że przynajmniej w Magento CE 1.9 i EE 1.14 i niższych getAttributeText('value')nie działa poprawnie, jeśli getAllOptions()metoda atrybutu zwraca opcje ułożone w zagnieżdżone tablice (wyrażone jako <optgroup>rozwijane).
Tyler V.

Odpowiedzi:

49

Oprócz kodu umieść to:

$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
źródło
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
źródło
1
Pomyliłem się z „etykietą atrybutu frontonu”, proszę poprawić pytanie. Nie „etykieta atrybutu”, to „etykieta opcji” lub „tekst atrybutu”
mageUz 24.09.2013