Mostrar características en el listado de productos de Prestashop (miniaturas en la portada, categorías…)

Varios clientes con tiendas Prestashop nos han medido esto alguna vez. Tenían productos con características y querían que las miniaturas mostraran alguna de esa información. Se puede hacer comprando un plugin (y si tienes la opción lo recomiendo), pero puede que el cliente no pueda o no quiera.

Obviamente, para hacerlo manualmente hay que retocar un poco el código de la plantilla. Hoy os mostramos cómo.
Nota: este código puede variar o incluso hacerse obsoleto en las diferentes versiones según actualicen Prestashop. A día de hoy (fecha del artículo) está probado y funcionando en 1.7 y muy similar en 1.6 (con variantes).

Cómo mostrar características en el listado de productos de Prestashop.

Lo primero que os recomendamos es que activéis, mientras desarrolláis el código, este truco para ver las variables que se pasan al mostrar los productos. A nosotros nos sirvió de mucho. Eso si, no lo hagáis en producción porque es latoso para los clientes.

Lo siguiente es que vais a modificar (en 1.7) el siguiente fichero de la plantilla (nos estamos basando en la classic, si usas otra puede variar): tutema/templates/catalog/_partials/miniatures/product.tpl.
Recomendamos como siempre hacer copia de seguridad y trabajar sobre un tema hijo.

El código hay que ponerlo detrás de :

{hook h='displayProductPriceBlock' product=$product type='weight'}
</div>
{/if}
{/block}

Y antes de :

{block name='product_reviews'}
{hook h='displayProductListReviews' product=$product}
{/block}
</div>

Es el siguiente código (que luego procedemos a explicar):

    {if isset($product.features)}
<div class="features" style="font-size:0.7rem;text-align:center;">
 {if $product.id_category_default == 22 or $product.id_category_default == 23 or $product.id_category_default == 24 or $product.id_category_default == 25}
             {foreach from=$product.features item=feature}
			
			   {if $feature.id_feature == 9 or $feature.id_feature == 8 or $feature.id_feature == 7}
                                    {$feature.name}: {$feature.value}
			   {/if}
			  {/foreach}
   {/if}
   {/if}
		   

En esta variante estamos haciendo que si hay características (features) y si el producto pertenece a ciertas categorías ($product.id_category_default == XX) muestre cada cada producto sólo las características determinadas $feature.id_feature == 9 ).
Con {$feature.name}: {$feature.value} muestra cada nombre de característica y cada valor.
Os hemos preferido dejar esto que es tan específico (mira si el producto es de una categoría y sólo selecciona unas características) para que vosotros lo modifiquéis a gusto.
Obviamente tenéis que identificar los IDs de las características y de las categorías en vuestra tienda.

Podéis hacer tantas variantes de esto como queráis. Por ejemplo en alguna tienda nosotros comprobamos la categoría padre de la categoría del producto con $category.id_parent == XX.

Con esto ya debería estar. No hace falta modificar módulos porque en 1.7 llaman a este fichero.

Así de «fácil». Obviamente no lo es tanto y luego tendréis que luchar en vuestra tienda por mostrarlo como queréis (cada caso es diferente).

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).

Time limit is exhausted. Please reload CAPTCHA.