Умный фильтр во всплывающей панели на мобильных.

Просмотров: 7386

Шаблон умного фильтра в Битриксе достаточно сложный, с точки зрения верстки и не очень красиво отображается на мобильных устройствах, занимая много места над товарами. Я сделал шаблон выезжающий сбоку при нажатии на кнопку, при этом учел упрощение верстки под конкретный дизайн сайта.

Типовой шаблон умного фильтра привязан к bootstrap сетке, что не всегда удобно, так как не все используют bootstrap при верстке сайтов. Подключать лишние 150 килобайт стилей из-за этого компонента не очень продуктивно.

Кроме того, на мобильных устройствах фильтр занимает много места над товарами. Особенно, если в вашем магазине много свойств, это становится совсем неуместным. И даже отобрав какие-то параметры, не каждый пользователь выдержит постоянную промотку до результатов.

Умный фильтр битрикс

На много удобнее сделать вот так: при мобильном разрешении фильтр скрывается в боковую панель и на его месте появляется кнопка вызова "Показать фильтр". При нажатии на кнопку, фильтр выезжает поверх области просмотра и имеет собственную прокрутку по вертикали (если параметры не помещаются по высоте)

Показать фильтр битрикс

В приложенном архиве шаблон умного фильтра сделанный по такому принципу. В довесок к такому поведению, в нем упрощенная верстка с использованием sass, что позволит легко переделать дизайн фильтра под дизайн конкретного сайта.

Скачать архив с шаблоном

В приложенном шаблоне оставлены часто используемые варианты параметров: цифры с ползунками, чекбоксы и радиокнопки. При этом окультуренные, что бы выглядело красиво.

Если используете и другие параметры, можете "дернуть" их из штатного фильтра, просто скопировать нужные case-ы.

Шаблон самодостаточный: не нужно выводить фильтр дважды, он умеет работать и на декстопе (работает как обычный фильтр) и на мобильном. Вся логика заключена исключительно в css и совсем немного js.

При желании и потребности, можно прикреплять кнопку вызова фильтра, что бы постоянно была сверху (при прокрутке страницы) или вывести отобранные параметры под ней.

Пример реализации показа уже выбранных параметров с возможностью сброса параметра, в заметке Показать выбранные параметры умного фильтра над товарами

Параметры фильтр битрикс

Видео: умный фильтр для мобильных разрешений

Как устроен шаблон и как его модифицировать, смотрите в видео.

Автоматическая фильтрация на декстопе c AJAX

Если вы хотите, чтобы умный фильтр мгновенно отображал отфильтрованные результаты без необходимости перезагрузки страницы и нажатия на кнопку «Показать», то следует учесть, что такой функционал может быть неудобным для мобильных устройств.

Если фильтр на мобильном устройстве открыт в панели, а пользователь что-то выбрал и на заднем плане появились соответствующие товары, он может этого не заметить. Поэтому на мобильных устройствах окно с подсчетом найденных товаров и кнопкой "показать" должно оставаться.

В script.js шаблона умного фильтра находим вот такой код и удаляем его:

if (modef.style.display === 'none')
{
	modef.style.display = 'inline-block';
}

if (this.viewMode == "VERTICAL")
	{
		curProp = BX.findChild(BX.findParent(this.curFilterinput, {'class':'bx-filter-parameters-box'}), {'class':'bx-filter-container-modef'}, true, false);
		curProp.appendChild(modef);
}

if (result.SEF_SET_FILTER_URL)
{
	this.bindUrlToButton('set_filter', result.SEF_SET_FILTER_URL);
}

Вместо него вставляем такой:

jQuery(($) => {
    if ($(window).width() < 768) {
        if (modef.style.display === 'none') {
            modef.style.display = 'inline-block';
        }
    } else {
        $.get(
            BX.util.htmlspecialcharsback(result.FILTER_AJAX_URL),
                function (data) {

                    // Обновляем блок update_ajax_filter с товарами
                    $('.update_ajax_filter').html($(data).find('.update_ajax_filter').html());

                    // Если нужно что бы в URL добавился ЧПУ результата фильтрации
                    window.history.replaceState(null, null, result.FILTER_AJAX_URL);
                }
        );
   }
});

Вывод товаров в section.php, шаблона комплексного компонента каталог, обворачиваем в div с классом update_ajax_filter

Теперь, на ширине экрана больше 768 px фильтр будет срабатывать в режиме AJAX с автоматическим отбором подходящих товаров, а на меньшей ширине будет работать штатно, без AJAX.

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.