Динамический фильтр товаров для сайта на битриксе

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

Форма фильтра состоит всего лишь из четырех выпадающих списков. Для простоты будем называть их селектами.

Первый селект предназначен для выбора раздела каталога. Здесь представлены только разделы первого уровня, но фильтр должен работать и по товарам вложенных разделов. Второй селект - для выбора производителя. Третий - для свойства. Ну и четвертый для значения свойства.

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

Так, например, если мы выберем из выпадающего списка один из разделов, то в селекте “Производитель” будут отображены только производители, представленные в этом разделе. А в селекте “Свойство”, только свойства установленные для товаров этого раздела.

Таким же образом уточняется список опций в селекте “Свойство” при изменении производителя. Или в селекте “Значение свойства” при выборе свойства. Все происходит очень быстро, без перезагрузки страницы.

При этом учитывается то, что для некоторых товаров могут быть не указаны некоторые свойства. В этом случае в соответствующих селектах появится опция “Не указано”, что позволяет нам найти все товары у которых, к примеру, не указан производитель или какое-нибудь другое свойство.

Фильтр был реализован в виде компонента битрикса.