Jump to content
JoseGut

Banner diferente para cada producto según categoría

Recommended Posts

He estado buscando una solución para aparezca un banner superior específico para cada producto según la categoría a la que corresponda y no he encontrado nada por internet, así que me he puesto manos a la obra. Con esta modificación del código original puedes hacerlo utilizando la plantilla por defecto. Lo que se puede conseguir es lo que ves en la imagen de más abajo.

ejemplo.thumb.jpg.197b115c61ca55e0c8c95045bc0667c2.jpg

 

El módulo ps_banner está incluido en el paquete de instalación de Prestashop, concretamente en la carpeta Themes/classic/modules. Por defecto está preparado para aparecer en la Home de la tienda pero, desde el apartado Diseño/Posiciones en la Admin de la tienda, puedes anclarlo en otros hooks y decidir en qué páginas quieres que aparezca.

Si quieres que se muestre el banner en las páginas de categoría o de producto a ancho completo -como en las imágenes del ejemplo de más arriba-, puedes fijar el módulo Banner al hook "displayNavFullWidth" y decirle en el listado que aparece más abajo en qué páginas NO quieres que se muestre (no olvides marcar index o el banner aparecerá dos veces en la Home, una en la parte superior y otra en el centro).

Jugando con la imagen del carousel y el banner central de la home, junto con las imágenes de categoría -que se asignan en la administración de la tienda-, se puede conseguir un sitio web mucho más atractivo desde el propio tema por defecto.

Y el código del archivo ps_banner.tpl modificado:

{if isset($category) && isset($product.description)}
  <a class="banner" href="{$link->getCategoryLink($category)|escape:'html':'UTF-8'}"><img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category_default')}" alt="Volver a la categoría" title="Volver a la categoría" class="img-fluid" ></a>


{elseif isset($category) && ! isset($product.description)}
  <a class="banner" href="{$urls.current_url}"><img src="{$urls.img_cat_url}{$category.id}-category_default.jpg" alt="NOMBRE DE LA TIENDA" title="NOMBRE DE LA TIENDA " class="img-fluid" ></a>


  {else}
  <a class="banner" href="{$banner_link}"><img src="{$banner_img}" alt="{$banner_desc}" title="{$banner_desc}" class="img-fluid" ></a>
{/if}

Como veis, le estamos diciendo al banner que:

1. si están definidas las variables "category" y "product.description", nos muestre la imagen de la categoría padre del producto. Sería la imagen del banner para la ficha de producto. Si se pincha sobre el banner, volveríamos a la categoría padre.
2. si está definida "category" pero no lo está "product.description", nos muestre la imagen de la categoría. Sería la imagen que vemos en el banner si pinchamos en cualquier menú sobre una categoría determinada, etc. Al pinchar en la categoría nos quedaríamos en la URL en que estemos.
3. Si nada de esto está definido, le decimos que aparezca la imagen genérica del banner, al menos en la Home de la web. Dependerá de la estructura que hayas especificado en la Admin de la tienda, en el apartado de Diseño/Posiciones.

Adjunto el archivo ps_banner modificado.
Como resumen, si quieres que en las fichas de producto aparezca un banner con la imagen de la categoría a la que pertenece, tienes que cambiar el archivo ps_banner original por el que adjunto y fiarlo en un hook superior en las páginas de categoría y producto

Hasta donde he podido probar, funciona como la seda. Estoy seguro de que se puede mejorar y ampliar añadiéndole nuevas funcionalidades (por ejemplo, que aparezca en nombre de la categoría en el title del banner correspondiente a cada categoría. Esto no lo he hecho, sino que he puesto un claim sobre la tienda. Espero no molestar a nadie y que os guste.

 

ps_banner.tpl

Edited by JoseGut (see edit history)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More