⚠️ A partir do dia 30 de janeiro de 2023, a biblioteca jQuery será removida do código de nossas lojas, portanto, a função "$" não poderá ser utilizada.
Essa funcionalidade permite trocar a imagem principal do produto de acordo com as variações do mesmo.
Por exemplo: Temos uma camiseta com variações nas cores azul/vermelho e queremos mostrar imagens ampliadas de cada uma delas, quando selecionadas.
Este tutorial é baseado no uso do plug-in Swiper, por isso recomendamos implementá-lo para a imagem de detalhes do produto antes de prosseguir. Neste link você encontrará o tutorial que inclui a implementação do Swiper para a imagem do produto e também a alteração da imagem por variante.
1. No arquivo store.js.tpl cole o código javascript abaixo. Essa função será executada a cada vez que uma mudança de variação for detectada.
LS.registerOnChangeVariant(function(variant){
var liImage = jQueryNuvem('.js-swiper-product').find("[data-image='"+variant.image+"']");
var selectedPosition = liImage.data('imagePosition');
var slideToGo = parseInt(selectedPosition);
productSwiper.slideTo(slideToGo);
jQueryNuvem(".js-product-slide-img").removeClass("js-active-variant");
liImage.find(".js-product-slide-img").addClass("js-active-variant");
});2. Em seguida, vá em templates/product.tpl e adicione o codigo embaixo. Especialmente as classes "js-product-slide-img" , "js-swiper-product" e o atributo data-image="{{image.id}}"
{% if product.images_count > 0 %}
<div class="js-swiper-product nube-slider-product swiper-container" style="visibility:hidden; height:0;">
{% include 'snipplets/labels.tpl' with {'product_detail': true} %}
<div class="swiper-wrapper">
{% for image in product.images %}
<div class="swiper-slide js-product-slide slider-slide" data-image="{{image.id}}" data-image-position="{{loop.index0}}">
<a href="{{ image | product_image_url('huge') }}" data-fancybox="product-gallery" class="d-block p-relative" style="padding-bottom: {{ image.dimensions['height'] / image.dimensions['width'] * 100}}%;">
<img src="{{ 'images/empty-placeholder.png' | static_url }}" data-srcset='{{ image | product_image_url('large') }} 480w, {{ image | product_image_url('huge') }} 640w' data-sizes="auto" class="js-product-slide-img product-slider-image img-absolute img-absolute-centered lazyautosizes lazyload" {% if image.alt %}alt="{{image.alt}}"{% endif %}/>
<img src="{{ image | product_image_url('tiny') }}" class="js-product-slide-img product-slider-image img-absolute img-absolute-centered blur-up" {% if image.alt %}alt="{{image.alt}}"{% endif %} />
</a>
</div>
{% endfor %}
{% include 'snipplets/product/product-video.tpl' %}
</div>
<div class="js-swiper-product-pagination swiper-pagination swiper-pagination-white"></div>
{% if has_multiple_slides %}
<div class="js-swiper-product-prev swiper-button-prev d-none d-md-block">{% include "snipplets/svg/chevron-left.tpl" with {svg_custom_class: "icon-inline icon-w-8 icon-2x svg-icon-text"} %}</div>
<div class="js-swiper-product-next swiper-button-next d-none d-md-block">{% include "snipplets/svg/chevron-right.tpl" with {svg_custom_class: "icon-inline icon-w-8 icon-2x svg-icon-text"} %}</div>
{% endif %}
</div>
{% endif %}