Mostrar los atributos del producto en la lista de la categoría – Prestashop

En /controllers/front/CategoryController.php en la función initContent() agregamos lo siguiente:

$combinations = $this->getProductAttributeCombinations($this->cat_products);
$this->context->smarty->assign('combinations', $combinations);

Declaramos la nueva funcion getProductAttributeCombinations().

/**
 * MOSTRAR LOS ATRIBUTOS DEL PRODUCTO
 *
 * function to get all necessary data of products combinations
 * @param $products An array of products data
 * @return array products combinations
 */
public function getProductAttributeCombinations($products) {
	$combinations = array();

    foreach($products as $product){
    	// load product object
        $product = new Product ($product['id_product'], $this->context->language->id);

        // get the product combinations data
        // create array combinations with key = id_product
        $combinations[$product->id] = $product->getAttributeCombinations($this->context->language->id);
    }

    return $combinations;
}

Ahora vamos al archivo themes/name_theme/product-list.tpl y donde queramos que aparezca los atributos de cada producto agregamos el siguiente código:

{foreach from=$combinations key=k item=comb}
    	{if $k == $product.id_product}
            {foreach from=$comb item=attr}
            	{if $attr.group_name == 'Talla'}
                	{$attr.attribute_name}
                {/if}
			{/foreach}
        {/if}
{/foreach}

En este caso estamos filtrando todos los atributos del producto más los atributos que sean del grupo Talla.

Para que también aparezcan los atributos cuando utilicemos la paginación deberemos ir a /modules/blocklayered/blocklayered.php buscamos la función ajaxCall() y en la asignación de las variables de smarty ( $smarty->assign ) agregamos la siguiente línea:

'combinations' => $this->getProductAttributeCombinations($products),

Y volvemos a declarar la función getProductAttributeCombinations().

5 pensamientos en “Mostrar los atributos del producto en la lista de la categoría – Prestashop”

  1. Hola,
    He implementado esto y para la Lista de Productos de la Categoría va perfecto! Muchas gracias!

    El problema, que al listar por Modelo, no me aparece, y estoy intentando modificar el código para que aparezca en estos casos, pero no lo consigo.

    Podría echarme una mano, por favor?

    Muchas gracias!

  2. Un millón de gracias, muy buen tutorial, perfectamente explicado todo. Probado en Prestashop 1.6.
    Te estoy muy agradecido, me ha salvado la vida con un cliente que me había pedido esto exactamente. Gracias de nuevo.

  3. Hola Daniel, un aporte de 10.

    Solo una duda,

    cuando dices:

    “En /controllers/front/CategoryController.php en la función initContent() agregamos lo siguiente:”

    Veo el siguiente código:

    /**
    * Initializes page content variables
    */
    public function initContent()
    {
    parent::initContent();

    Donde tengo que poner el fragmento de código que comentas?

    (Este para ser exactos: $combinations = $this->getProductAttributeCombinations($this->cat_products);
    $this->context->smarty->assign(‘combinations’, $combinations); )

    Un saludo y mil gracias por este aporte!

    1. Hola Alex,

      Muchas gracias por tu comentario.
      Como bien dices, dentro de la función “initContent()” después de “parent::initContent();” deberías añadir el código.

      Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *