Mostrar imagen de combinación en carrito de la tienda en Prestashop

Si tenemos una tienda con combinacion de productos, cada uno de ellos puede tener asociada una o mas imagenes

si elegimos una en concreto con combinacion, al añadir al carrito muestra la foto del producto por defecto

Para solucionarlo hay que cambiar un par de templates y añadir unas funciones a la clase producto.

en Product.php

public static function getProducImage($id_product_attribute,$id_product) { if (isset($id_product_attribute) && $id_product_attribute) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'product_attribute_image` pai'. Shop::addSqlAssociation('image', 'pai', true).' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = pai.`id_image`) WHERE id_product_attribute = '.(int)$id_product_attribute. ' ORDER by i.position ASC'); } if (!isset($id_image) || !$id_image) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'image` i'. Shop::addSqlAssociation('image', 'i', true, 'image_shop.cover=1').' WHERE i.id_product = '.(int)$id_product ); } return $id_image; } public static function getProducImageUrl($id_product_attribute,$id_product) { if (isset($id_product_attribute) && $id_product_attribute) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'product_attribute_image` pai'. Shop::addSqlAssociation('image', 'pai', true).' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = pai.`id_image`) WHERE id_product_attribute = '.(int)$id_product_attribute. ' ORDER by i.position ASC'); } if ($id_image!=""){ $aux=str_split($id_image); $salida="img/p/"; foreach($aux as $n){ $salida.=$n."/"; } $salida.=$id_image.".jpg"; return $salida; }else{ return ""; } }

en templated/checkout/_partials/cart-detailed-product-line.tpl

 {assign var='attributoimageid' value=Product::getProducImage($product.id_product_attribute,$product->id)}
     {assign var='attributoimage' value=Product::getProducImageUrl($product.id_product_attribute,$product->id)}
      {if $attributoimage}
       
       
        
         
          <img src="{$attributoimage}" data-full-size-image-url="{$product.cover.large.url}" />
      {else}
          {if $product.cover}
              <img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
            {else}
            <img src="{$urls.no_picture_image.bySize.cart_default.url}" />
          {/if}
      {/if}

En modules/ps_shoppingcart/ps_shoppingcart.tpl

{assign var='attributoimageid' value=Product::getProducImage($product.id_product_attribute,$product->id)}
                          {assign var='attributoimage' value=Product::getProducImageUrl($product.id_product_attribute,$product->id)}
                            {if $attributoimage}
                            
                                <img src="{$attributoimage}" style="max-width:90px" data-full-size-image-url="{$product.cover.large.url}" />
                            {else}
                                {if $product.cover}
                                    <img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
                                  {else}
                                  <img src="{$urls.no_picture_image.bySize.cart_default.url}" />
                                {/if}
                            {/if}

Deja una respuesta

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

* Please enter the Biggest Number