Pregunta

Al cargar una colección, ¿cómo puedo obtener el texto del valor del atributo (y no solo el número de opción) cuando es un atributo desplegable?

Ejemplo:

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

Al utilizar este código, se muestran los ID de opción para color como:123, 117, etc.y no los valores de texto (como:rojo, verde, etc.)

Por lo general, iteramos a través de cada producto y obtenemos el texto del atributo, pero dado que esto se usa en el Catálogo->Administrar productos página Estoy buscando una solución alternativa.

¿Fue útil?

Solución

Supongo que primero estás usando Mage_Catalog_Model_Resource_Product_Collection y no simplemente el recurso como se indica en su pregunta.

Ahora también asumo que estás recorriendo los resultados de tu colección.

foreach($collection as $product) {}

Una vez que tenga el objeto del producto, puede llamar a la función. getAttributeText y especifique el código de atributo.Esto cargará el atributo, obtendrá la fuente y luego el texto de la opción según los datos del atributo asignados al producto.

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

Entonces, si está recorriendo su colección, simplemente debe llamar:

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

Otros consejos

Intente agregar "_Value" después del nombre del atributo como este:

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

Si está utilizando tablas planas para productos, puede buscar en la tabla de la base de datos CATALOG_PRODUCT_FLAT_1 para ver los atributos disponibles, creo.

¿Necesitas ordenar por valores?De lo contrario, puede seleccionar todas las opciones de atributos como $colors hash con una consulta (!) y luego mostrarlas como $colors[$product->getColor()]

Probablemente sea más rápido que seleccionar cada valor en el bucle o realizar uniones adicionales, pero no funciona para ordenar colecciones :(

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top