Mostrar atributos en el listado de productos

Vie, Feb 27, 2009

Tutoriales

Por defecto Magento no carga todos los atributos de un producto cuando estamos mostrando el listado de productos de una categoría. Esto se hace para evitar tener que cargar una cantidad exagerada de atributos cuando tan sólo es necesario lo básico: nombre, imagen, precio… el resto de atributos se mostrarán en la ficha de cada producto.

Sin embargo es muy sencillo mostrar atributos, que no se cargan por defecto, en el listado de productos de nuestras categorías. Gracias a la potencia y escalabilidad de Magento podemos realizar esto sin tener que tocar el código del núcleo.

Lo primero que tendremos que tener es nuestro atributo creado y correctamente clasificado (y con datos) en la ficha de nuestro producto. Para añadir un atributo lo haremos desde el menú de Catálogo y en Gestionar atributos. Después asignaremos el atributo creado a un grupo de datos (los bloques que aparecen a la izquierda en la edición de una ficha de producto) desde Gestionar bloques de atributos.

Una vez realizado los pasos necesarios en la administración, vamos a editar el fichero XML correspondiente dentro de la carpeta ‘layout’ de nuestra plantilla para Magento.

Abriremos el XML correspondiente a la sección en la que necesitamos mostrar el atributo, en nuestro caso como vamos a mostrar el atributo en el listado de categorías abrimos el fichero: catalog.xml y añadimos los atributos que queremos modificar, bajo <catalog_category_default>.

&lt;layout&gt;
&lt;!-- ... --&gt;
&lt;catalog_category_default&gt;
 
&lt;!-- ... --&gt;
&lt;block type="catalog/product_list" name="product_list"&gt;
 
&lt;!-- MODIFICACIÓN --&gt;
&lt;action method="addAttribute"&gt;&lt;attribute&gt;NombreAtributo&lt;/attribute&gt;&lt;/action&gt;
&lt;!-- FIN MODIFICACIÓN --&gt;
 
&lt;/block&gt;
&lt;!-- ... --&gt;
 
&lt;/catalog_category_default&gt;
&lt;!-- ... --&gt;
&lt;/layout&gt;

Donde ‘NombreAtributo‘ corresponde con el identificador del atributo a mostrar. Realizaremos lo mismo bajo el padre <catalog_category_layered>.

Y ahora ya solo nos queda añadir el código necesario en nuestra plantilla para que el atributo se muestre.

Abrimos el fichero:  app/design/frontend/<tienda>/<plantilla_web>/template/catalog/product/list.phtml

Y no tenemos más que añadir el siguiente código allí donde queramos que aparezca el valor del atributo.

Para mostrar un valor:

&lt;?php echo $_product-&gt;getNombreAtributo()?&gt;

O

&lt;?php echo $_product-&gt;detData('NombreAtributo'); ?&gt;

Para mostrar un desplegable:

&lt;?php echo $_product-&gt;getAttributeText('NombreAtributo')?&gt;

Para un campo booleano:

&lt;?php echo str_replace(1,"Yes",str_replace(0,"No",$_product-&gt;getNombreAtributo()))?&gt;

Como hemos dicho, esto no es necesario en la ficha del producto, puesto que todos los atributos se cargan automáticamente.

Popularity: 11% [?]

, , ,

3 Respuestas a “Mostrar atributos en el listado de productos”

  1. OSdave Dice:

    muy buen articulo Xarlie, ya sé de un hilo del foro que te lo va a agradecer ;)

  2. jmassi Dice:

    Otra opción seria usar:

    Para mostrar un valor:


    echo $_product->getResource()->getAttribute('NombreAtributo')

    Para mostrar un desplegable:


    echo $_product->getResource()->getAttribute('NombreAtributo')->getFrontend()->getValue($_product)

    de esta manera se puede hacer sin tocar el XML

  3. david Dice:

    Hola , lo he probado de ambas maneras y no consigo mostrar los atributos en la lista. Creo que puede ser debido a la rapidez con que salen las nuevas versiones.

    En la actual (1.3) hay una opcion dentro de los atributos que pone USED IN PRODUCLISTING, que debería hacerlo sin modificar nada del codigo pero tampoco aparecen.

    Me gustaria ver una web que lo tenga en funcionamiento para ponerme en contacto

    gracias

Deja una Respuesta

Debes ser conectado hacer un comentario.