/ Scripts & jquery / Добавляем в галерею фильтр

Добавляем в галерею фильтр

26.03.2021

117

Добавим в стандартную галерею функционал карусели и фильтрации с помощью скрипта slick.

Галерея с каруселью

Атрибуты alt для изображений можно задать только заранее, либо в процессе создания галереи. Позже при добавлении в медиабиблиотеке атрибутов alt они у изображений в галерее выводится не будут.

У созданной галереи задаем класс, например cgallery. Инициируем slick для галереи с классом cgallery

$('.cgallery .blocks-gallery-grid').slick({
	infinite: false,
	autoplay: false,
	dots: false,
	arrows: true,
	speed: 500,
	slidesToShow: 4,
	slidesToScroll: 2,
	centerPadding: '15px',
	responsive: [
		{
		  breakpoint: 800,
		  settings: {
			slidesToShow: 3,
			slidesToScroll: 2,
		  }
		},
		{
		  breakpoint: 480,
		  settings: {
			slidesToShow: 2,
			slidesToScroll: 2
		  }
		},
		{
		  breakpoint: 330,
		  settings: {
			slidesToShow: 1,
			slidesToScroll: 1
		  }
		}
	] 
});

Добавляем фильтр

Добавляем изображениям описание в виде атрибутов для фильтра. Например: gost, one, two, three. Далее мы эти описания будем передавать в класс элемента галереи.

Скрываем вывод описаний во фронтенде:

.cgallery figcaption.blocks-gallery-item__caption {opacity: 0;}

Берем описания изображений и переводим их в класс элементов. Добавляем вывод кнопок фильтра и скрипты по нажатию каждой кнопки:

jQuery(document).ready(function() {
	
	$('.cgallery figcaption').each(function(){
		var text = $(this).text();
		$(this).parents('li.blocks-gallery-item').addClass(text);
	});
	
	
	$('.cgallery').prepend('<div class="fbtns"><div class="all-filter active">Все планировки</div><div class="gost-filter">Гостинки</div><div class="one-filter">Однокомнатные</div><div class="two-filter">Двухкомнатные</div><div class="three-filter">Трехкомнатные +</div></div>');
	
	
	$('.fbtns > *').on('click', function(){
		$('.fbtns > *').removeClass('active');
		$(this).addClass('active');
	});		


	$('.gost-filter').on('click', function(){
		$('.blocks-gallery-grid').slick('slickUnfilter');
		$('.blocks-gallery-grid').slick('slickFilter','.gost');
	});	

	$('.one-filter').on('click', function(){
		$('.blocks-gallery-grid').slick('slickUnfilter');
		$('.blocks-gallery-grid').slick('slickFilter','.one');
	});
	
	$('.two-filter').on('click', function(){
		$('.blocks-gallery-grid').slick('slickUnfilter');
		$('.blocks-gallery-grid').slick('slickFilter','.two');
	});
	
	$('.three-filter').on('click', function(){
		$('.blocks-gallery-grid').slick('slickUnfilter');
		$('.blocks-gallery-grid').slick('slickFilter','.three');
	});
	
	$('.all-filter').on('click', function(){
		$('.blocks-gallery-grid').slick('slickUnfilter');
	});

});

CSS

.fbtns {display: flex; flex-wrap: wrap;}

.fbtns > * {border: 1px solid #eee; padding: 5px 15px; border-radius: 5px; margin: 0 15px 15px; cursor: pointer;}

.fbtns > *:hover {border: 1px solid #ffc107;}

.fbtns > *.active {background: #ffc107;}

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Добавляем в галерею фильтр Добавляем в галерею фильтр Добавляем в галерею фильтр
Форма подписки без плагина
Рекомендации для васФорма подписки без плагинаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.