Usar logo fabricante en la ficha de producto de Prestashop

publicado en: Tutoriales | 11

Vengo a ahorraros algo de tiempo. Si trabajáis con Prestashop ya sabréis que hay determinadas variables globales que podemos usar para las plantillas. El problema es que no están todas las que necesitamos , por lo que hay veces que tenemos que tirar un poco de improvisación, por eso explico a continuación la forma que os permitirá incluir el logo del fabricante, además lleva un enlace para que al pinchar se listen todos los productos de ese fabricante.

Yo lo he usado en la plantilla de product.tpl, pero la podeis usar en cualquiera que os venga bien.

{* Fabricante *}
<div class="product_manufacturer">
    <a title="{l s='Más productos de este fabricante...'}" href="{$base_dir}manufacturer.php?id_manufacturer={$product->id_manufacturer}">
        <img src="{$img_ps_dir}m/{$product->id_manufacturer}.jpg" alt="" />
    </a>
</div>

Bueno espero que os sea de utilidad y os ahorre un tiempo de búsqueda, porque yo no encontraba nada del tipo {$product->manufacturer_image}, que hubiera sido lo suyo…así que me fuí directamente a por la imagen.

¿Una vez que se sabe es fácil verdad? Espero que os sea de utilidad 😉

11 comentarios

  1. Cesar Ruiz Diaz

    Gracias por tu aporte soy relativamente nuevo y aun no conosco bien los codigos de programacio de php y me estoy familiarizando recien con la estructura de prestashop.

    mi pregunta es:

    si qusiera reducir el tamaño de la imagen a un formato unico que es lo que tendria que hacer

    Gracias

    • dwalins

      Hola Cesar, para tener las imágenes a un tamaño único yo te recomendaría que las optimizaras con algún programa de retoque fotográfico como Photoshop, así te aseguras de estar usando el correcto tamaño que necesitas y te evitas consumir espacio innecesariamente en tu servidor. En caso de que esto no sea posible, puedes añadir a la etiqueta img la especificación del tamaño:

      < img src="{$img_ps_dir}m/{$product->id_manufacturer}.jpg» alt=»» width=»Tamaño_que_necesites» />

      De esta forma tendrás todas estas imágenes al mismo ancho, si fuera necesario podrías incluir también el alto que deben tener, pero si cada una tiene una proporción distinta lo que conseguirás es que se deformen.

      Espero haber sido de ayuda!

  2. Buen trabajo

    Hola!

    muchas gracias por tomarte el tiempo para escribir este articulo! Me ha sido de gran ayuda, me has ahorrado tiempo y dolores de cabeza 😉

    muchas gracias y buen trabajo!

    • dwalins

      Me encanta que saquéis partido de los tutoriales que publico por aquí! Seguiré haciéndolo con las mismas ganas y la misma calidad para ahorraros esos dolores de cabeza 🙂

  3. Fab

    Me parece muy útil esta información, pero sabes si es posible que salga la imagen del fabricante cuando no hay imagen del producto en vez de la imagen que sale por defecto “No image available”
    Gracias

    • dwalins

      Hola Fab! me alegra que te parezca útil esta información!
      Por supuesto que se puede hacer lo que propones, de hecho no tiene apenas complicación. En el tpl del producto (product.tpl) tienes que buscar donde se carga la imagen, ahí se comprueba si tiene imagen de producto o no y en el caso de no tenerla lo que hace es mostrar esa imagen por defecto que comentas, así que lo que debemos hacer es modificar ese trozo y que nos cargue nuestra imagen de fabricante. Al final (simplificando mucho) debe quedarte una cosa así:

      {if $have_image}			
      	{$product->name|escape:'htmlall':'UTF-8'}			
      {else}
      	
      {/if}
      

      Como verás cuando lo compares con tu archivo lo que hemos hecho ha sido modificar la parte del else que es la acción que se realiza cuando no hay imagen.

      Cuando lo tengas coméntanos que tal te ha quedado!
      Un saludo

    • Fab

      Hola dwalins,
      Muchas gracias, pero no me funciona.
      No soy un experto y probablemente es este el problema.
      Primero he encontrado varios archivos (product.tpl) aquí es donde se localizan:
      Themes/defalut
      Modules/loyalty/views/templetes/hook
      Modules/mailalerts/views/templetes/look

      He intentado modificar el archivo que se encuentra en Themes/defalut
      esto es lo que he encontrado:

      {if $have_image}

      getImageLink($product->link_rewrite, $cover.id_image, ‘large_default’)|escape:’html’}»{if $jqZoomEnabled && $have_image} class=»jqzoom»{/if} title=»{$product->name|escape:’htmlall’:’UTF-8′}» alt=»{$product->name|escape:’htmlall’:’UTF-8′}» id=»bigpic» width=»{$largeSize.width}» height=»{$largeSize.height}»/>
      {l s=’Maximize’}

      {else}

      name|escape:’htmlall’:’UTF-8′}» width=»{$largeSize.width}» height=»{$largeSize.height}» />
      {l s=’Maximize’}

      {/if}

      he modificado la {else} como me has comentado pero no funciona:

      {else}
      id_manufacturer}.jpg» />
      {/if}

      no se si el archivo no es el correcto o si no tenía que modificarlo así.
      No quiero hacerte perder tiempo ya que no soy un experto.
      Gracias

    • dwalins

      Hola Fab, perdona por tardar tanto en responderte.
      Pues la modificación la tienes que hacer en la carpeta de tu tema activo, suponiendo que sea el default pues seria /themes/default/product.tpl
      El archivo que has escogido por tanto es el correcto, ¿sabes que versión de Prestashop estas usando?
      En el {else} prueba a enlazar directamente con una foto, algo así:

      {if $have_image}			
      	{$product->name|escape:'htmlall':'UTF-8'}			
      {else}
      	
      {/if}
      

      Fíjate que de esta forma lo que vas a hacer es cargar para todos la misma imagen (mi avatar en este caso), si te aparece la foto significa que lo estas haciendo todo bien, pero la ruta a las imágenes de tus fabricantes son algo diferentes, pruebalo y me dices! 🙂

    • Fab

      Hola dwalins,
      Finalmente he sustituido la imagen que viene por defecto (imagen not available) con otra con nuestro logo. Gracias por todo.

    • dwalins

      Hola Jose,

      Gracias por la actualización. El filtro de spam me bloquea la visualización correcta, ¿te importaría pasarmelo a través del contacto y asi lo actualizo en la web?

      Un saludo!

Deja una respuesta

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