¿Cómo obtener el atributo "etiqueta de opción / texto de atributo" que tiene "valor de atributo" (id_opción)?

18

Supongamos que tengo un atributo que es una colección de opciones (desplegable / multiselección).

Puedo recuperar el valor del atributo para un producto dado:

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

Ahora, obtuve el atributo option_id, que es un valor numérico ...

... ¿Cuál es la mejor manera de cargar la etiqueta de atributo de interfaz para mi valor de atributo? (sin cargar el producto completo)

Solución gracias 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
fuente
2
Por qué esta pregunta es dada varias veces por el autor exacto y todos ellos confunden a los usuarios. ¿Podemos marcar como duplicados como estas preguntas sin respuestas correctas? Esta pregunta de magento.stackexchange.com/questions/3003 dada por el autor no es una respuesta correcta, ¡pero por qué vota a favor (y recibe su propia respuesta)! Este magento.stackexchange.com/questions/976 también es el mismo. Tal vez mi solicitud no es correcta, pero una pregunta, un autor y ninguna respuesta. Por favor, mantenga la calidad del sitio. Gracias.
mageUz
He mejorado la otra pregunta agregando la solución @Marius magento.stackexchange.com/questions/3003/…
Fra
1
Tenga en cuenta que al menos en Magento CE 1.9 y EE 1.14 y versiones posteriores, getAttributeText('value')no funciona correctamente si el getAllOptions()método del atributo devuelve opciones organizadas con matrices anidadas (expresadas como un <optgroup>en el menú desplegable).
Tyler V.

Respuestas:

49

Además de su código ponga esto:

$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
fuente
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
fuente
1
Confundí con "etiqueta de atributo de interfaz", por favor, corrija la pregunta. No es "etiqueta de atributo", esto es "etiqueta de opción" o "texto de atributo"
mageUz