<!--КОД ПРИВЯЗКИ ЦВЕТА ТОВАРА И ФОТО ST205-->
<script>
const colorOptionName = 'Цвет';
document.addEventListener("DOMContentLoaded", function() {
(function () {
document.querySelectorAll('.js-product-single').forEach(productElement => {
productElement.addEventListener("tStoreSingleProductsLoaded", function() {
const block = this;
setTimeout(function() {
createMdfSlider(block);
}, 500);
});
});
function createMdfSlider(block){
const colorOption = block.querySelector('.js-product-edition-option[data-edition-option-id="'+colorOptionName+'"]');
if(colorOption){
const colorInputs = colorOption.querySelectorAll('input.t-product__option-input[name="'+colorOptionName+'"]');
colorInputs.forEach(function (el, index) {
el.addEventListener('change',function(e) {
changeSlider();
});
});
//Функция изменения слайдера
function changeSlider(){
//Получаем активный цвет
const colorNameActive = colorOption.querySelector('input.t-product__option-input[name="'+colorOptionName+'"]:checked').value;
//Получаем слайдер и слайды
const slideWrapper = block.querySelector('.t-slds__items-wrapper');
const tslds__item = slideWrapper.querySelectorAll('.t-slds__item:not(.t-slds__item_dummy)');
//Получаем миниатюры
const thumbsbulletWrapper = block.querySelector('.t-slds__thumbsbullet-wrapper');
let thumbs = false;
let thumbsbullet = [];
if(thumbsbulletWrapper){
thumbs = true;
thumbsbullet = thumbsbulletWrapper.querySelectorAll('.t-slds__thumbsbullet');
};
let showSlidesTotal = 0;
for(let i=1; i<(tslds__item.length-1);i++){
tslds__item[i].setAttribute('data-ex-slide-index', i);
if(tslds__item[i].classList.contains("t-slds__item_active")){
tslds__item[i].classList.remove('t-slds__item_active');
};
if(tslds__item[i].classList.contains("no-visible-slide")){
tslds__item[i].classList.remove('no-visible-slide');
};
let metaColor = tslds__item[i].querySelector('meta[itemprop="caption"]');
//Удаляем активный класс у миниатюр
if(thumbs){
//Сохраняем индекс
thumbsbullet[i-1].setAttribute('data-ex-thumb-index', i);
//Удаляем ненужный класс
if(thumbsbullet[i-1].classList.contains("t-slds__bullet_active")){
thumbsbullet[i-1].classList.remove("t-slds__bullet_active");
};
if(thumbsbullet[i-1].classList.contains("no-visible-dots")){
thumbsbullet[i-1].classList.remove("no-visible-dots");
};
};
//Проверяем есть ли zoom у слайда
let zoom = false;
const imgWrapper = tslds__item[i].querySelector('.t-slds__imgwrapper');
if ( imgWrapper.getAttribute('data-zoomable') === 'yes'){
zoom = true;
imgWrapper.classList.add('t-zoomable');
};
//Если meta есть у слайда
if(metaColor) {
metaColor = metaColor.getAttribute('content');
//Если цвет совпал
if(metaColor.includes(colorNameActive)){
showSlidesTotal++;
//Назначаем новый индекс
tslds__item[i].setAttribute('data-slide-index', showSlidesTotal);
//Меняем индекс миниатюр
if(thumbs){
thumbsbullet[i-1].setAttribute('data-slide-bullet-for', showSlidesTotal);
};
//Если цвет не совпал
}else{
//Очищаем индекс
tslds__item[i].setAttribute('data-slide-index', '-1');
//Скрываем слайд
tslds__item[i].classList.add('no-visible-slide');
//Удаляем zoom
if(zoom) imgWrapper.classList.remove('t-zoomable');
//Изменяем индекс миниатюр и скрываем их
if(thumbs){
thumbsbullet[i-1].setAttribute('data-slide-bullet-for', '-1');
thumbsbullet[i-1].classList.add('no-visible-dots');
};
}
//Если meta нет у слайда
}else{
//Назначаем новый индекс
showSlidesTotal++;
tslds__item[i].setAttribute('data-slide-index', showSlidesTotal);
//Меняем индекс миниатюр
if(thumbs){
thumbsbullet[i-1].setAttribute('data-slide-bullet-for', showSlidesTotal);
};
};
//Если это первое обнаружение, то задаём активный класс
if(showSlidesTotal==1){
tslds__item[i].classList.add('t-slds__item_active');
if(thumbs){
thumbsbullet[i-1].classList.add('t-slds__bullet_active');
};
};
};
//Если есть слайды к показу
if(showSlidesTotal){
//Меняем общее кол-во слайдов + текущий слайд
slideWrapper.setAttribute('data-slider-pos', 1);
slideWrapper.setAttribute('data-slider-totalslides', showSlidesTotal);
//Проставляем изображение первого слайда в пост-последний, а последнего в нулевой
const firstImage = slideWrapper.querySelector('.t-slds__item[data-slide-index="1"] .t-bgimg').getAttribute('data-original');
const lastImage = slideWrapper.querySelector('.t-slds__item[data-slide-index="'+showSlidesTotal+'"] .t-bgimg').getAttribute('data-original');
//Нулевой слайд
const zeroSlide = slideWrapper.querySelector('.t-slds__item[data-slide-index="0"]');
const zeroMeta = zeroSlide.querySelector('meta[itemprop="image"]');
if(zeroMeta) zeroMeta.setAttribute('content', lastImage);
const zeroSlds__imgwrapper = zeroSlide.querySelector('.t-slds__imgwrapper');
if(zeroSlds__imgwrapper.hasAttribute('data-img-zoom-url')) zeroSlds__imgwrapper.setAttribute('data-img-zoom-url', lastImage);
const firstT_bgimg = zeroSlide.querySelector('.t-bgimg');
if(firstT_bgimg){
firstT_bgimg.setAttribute('data-original', lastImage);
firstT_bgimg.style.backgroundImage = `url('${lastImage}')`;
};
//Последний слайд
const lastSlide = slideWrapper.querySelector('.t-slds__item[data-slide-index="'+(tslds__item.length-1)+'"]');
const lastMeta = lastSlide.querySelector('meta[itemprop="image"]');
if(lastMeta) lastMeta.setAttribute('content', firstImage);
const latSlds__imgwrapper = lastSlide.querySelector('.t-slds__imgwrapper');
if(latSlds__imgwrapper.hasAttribute('data-img-zoom-url')) latSlds__imgwrapper.setAttribute('data-img-zoom-url', firstImage);
const lastT_bgimg = lastSlide.querySelector('.t-bgimg');
if(lastT_bgimg){
lastT_bgimg.setAttribute('data-original', firstImage);
lastT_bgimg.style.backgroundImage = `url('${firstImage}')`;
};
};
//Показываем слайдер
block.querySelector('.t-slds').style.backgroundImage = 'none';
const slides = block.querySelectorAll('.t-slds > div');
slides.forEach(slide => {
slide.classList.add('show-slide');
});
};
changeSlider();
};
};
})();
});
</script>
<style>
.no-visible-slide,
.no-visible-dots{
display: none !important;
}
.t-slds {
background-image: url(https://static.tildacdn.com/tild3539-3633-4561-b766-326133363038/loading-gif-png-5.gif);
background-size: 35px;
background-repeat: no-repeat;
background-position: center;
}
.t-slds>div {
filter: opacity(0.4) blur(5px);
transition: all 0.3s;
}
.t-slds>div.show-slide {
filter: opacity(1) blur(0);
}
</style>