Работа фильтров для подбора товаров

Фильтры на странице

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

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

Фильтр на странице с вложением страниц

Можно реализовать фильтр для вложенных страниц. В этом случае нужно, чтобы у всех дочерних страниц были одинаковые группы характеристик и активирован пункт "Показывать фильтр". Если дополнительно включить элемент "Системная переменная" с названием sys_bottom_products (равен 1), то будет показываться список вложенных товаров. Количество товаров задаётся в настройке страницы Количество записей в каталоге (раздел Дополнительно). 

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

Массив с доступными фильтрами

Массив фильтра доступен в переменной $page.filters, где ключ содержит ID или alias характеристики, а внутри содержит следующие элементы:

[city] => Array
(
	[id] => 46
	[title] => Город
	[alias] => city
	[sort] => 1
	[group_id] => 5
	[type] => select
	[show_in_filter] => 1
	[filter_type] => multicheckbox
	[show_in_list] => 1
	[filter_description] => 
	[after] => 
	[icon] => 
	[to_show] => all
	[value_min] => 0.00
	[value_max] => 0.00
	[values] => Array
		(
			[0] => Array
				(
					[id] => 456
					[id_option] => 46
					[id_product] => 16
					[value] => Москва
					[where_placed] => product
					[value2] => 
					[value3] => 
					[qty] => 1
					[checked] => checked
				)

Отдельно формируется массив с ценой, где указывается минимальная и максимальная цена. Содержится массив в элементе $page.filters.price

[price] => Array
(
	[value_min] => 0
	[value_max] => 78000
)

Запрошенные значения

Контролировать запрошенные значения из фильтра можно в массиве роутера $uri.params.options шаблона или в коде в массиве $site->uri['params']['options']. Однако удобнее это делать в элементе массива $page.requested_filter 

[requested_filter] => Array
(
	[city] => Москва
	[47] => 
	[48] => 
	[price] => Array
		(
			[from] => 0
			[to] => 78000
			[min] => 0
			[max] => 78000
		)
)

Результаты фильтра

Результаты выводятся в стандартном массиве списка товаров $page.list_products