Как получить атрибут «метка опции / текст атрибута», имеющий «значение атрибута» (option_id)?

18

Предположим, у меня есть атрибут, представляющий собой набор параметров (выпадающий / множественный выбор).

Я могу получить значение атрибута для данного продукта:

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

Теперь я получил атрибут option_id, который является числовым значением ...

... Каков наилучший способ загрузить метку атрибута внешнего интерфейса для моего значения атрибута? (без загрузки полного продукта)

Решение спасибо Мариусу :

// 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);
От
источник
2
Почему этот вопрос задается несколько раз точным автором и все они сбивают с толку пользователей. Можем ли мы пометить как дубликаты как эти вопросы без правильных ответов? На этот вопрос magento.stackexchange.com/questions/3003, заданный автором, нет правильных ответов, но почему вы проголосовали (и дали собственный ответ)! Этот magento.stackexchange.com/questions/976 такой же. Возможно, моя просьба не верна, но один вопрос, один автор и никаких ответов. Пожалуйста, сохраняйте качество сайта. Благодарю.
mageUz
Я улучшил другой вопрос, добавив решение @Marius magento.stackexchange.com/questions/3003/…
Fra
1
Обратите внимание, что, по крайней мере, в Magento CE 1.9 и EE 1.14 и ниже, getAttributeText('value')он не будет работать правильно, если метод атрибута getAllOptions()возвращает опции, упорядоченные во вложенных массивах (выражается <optgroup>в выпадающем списке.)
Тайлер В.

Ответы:

49

В дополнение к вашему коду поместите это:

$product = Mage::getModel('catalog/product')
                ->setStoreId($store_id)
                ->setBrand($brand_value); // not loading the product - just creating a simple instance
$brandLabel = $product->getAttributeText('brand');
Мариус
источник
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
источник
1
Я перепутал для "метки атрибута внешнего интерфейса", пожалуйста, исправьте вопрос. Не «метка атрибута», это «метка опции» или «текст атрибута»
mageUz