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}