Этот урок будем вам полезен, если вы разрабатываете свою собственную тему для WooCommerce и в магазине планируется использование вариативных товаров. Покажу вам готовый JavaScript-код, который поможет реализовать переключение изображений в галерее товара при смене его вариации.
Для наглядности я записал для вас видео:
Также рекомендую вам мой видеокурс по созданию темы WooCommerce с нуля на основе готовой HTML-вёрстки. В нём мы уделяем особое внимание странице товара.
Прежде, чем достичь переключения вариаций, нам нужно добавить все изображения в галерею товара. То есть любое изображение, которое вы добавили в качестве изображения вариации…
… вам также нужно добавить и сюда:
Это нужно нам для того, чтобы не обалдеть от ручной замены атрибутов src
, srcset
, sizes
изображения, и не париться с разными ширинами и высотами, а всего лишь переключить слайд.
Прежде, чем покажу вам готовый код, хочу научить вас работать с событием переключения вариации товара. Выглядит оно вот так:
$('.single_variation_wrap').on( 'show_variation', function( event, variation ) { console.log( variation ); } );
Например после использования этого кода, в консоли браузера я получу полный объект вариации.
Важный момент, о котором следует помнить – событие show_variation
срабатывает не только после того, как вы переключили вариацию товара, но и один раз при загрузке страницы!
jQuery( function( $ ) { $('.single_variation_wrap').on( 'show_variation', function( event, variation ) { // console.log( variation ); let index = 0; if( variation.image.src ) { $( '.slider-for' ).find( 'img[src="' + variation.image.src + '"]' ).each( function() { if( ! $(this).parent().hasClass( 'slick-cloned' ) ) { index = $(this).parent().attr( 'data-slick-index' ); } }); $('.slider-nav').slick( 'slickGoTo', index ); } } ); } );
Сейчас расскажу про этот код:
.slick-for
и .slick-nav
, но в вашей вёрстке они могут быть и другими.src
-атрибуту и получаем индекс из атрибута data-slick-index
..slick-cloned
, который дублирует слайды для плавной бесконечной прокрутки (она у вас может быть и отключена).slickGoTo
для перехода к слайду по его индексу.wp_footer
.Если непосредственно JavaScript-код кажется вам сложноватым, то могу попробовать научить вас в своём курсе по джаваскрипту на готовых и последовательных примерах.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Добрый день! А с помощью ванильного javascript как-то можно получить этот объект - "variation" ? Буду очень благодарен за помощь.
Хотя нашел... const variationsString = document.querySelector('.variations_form').getAttribute('data-product_variations');
const variationsObject = JSON.parse(variationsString);