Наверное уже не актуально, но напишу, может пригодится.
В макете страниц не будет переменной filter.
Нужно создать глобальную переменную ранее, а затем использовать ее в макете.
Например, если опираться на переменную filter, то можно в сетах body_items и body_search создавать такую глобальную переменную:
и переменную g_has_filter использовать уже в макете.
НО здесь есть такой нюанс - не стоит полагаться на переменную filter.
Скорее всего вы подразумеваете, что есть категории, для которых в наборе свойств нет свойств, отображаемых в фильтре. В этом случае фильтр будет (там будут скрытые поля для сортировки и др.), но выводимых на страницу полей не будет. Т.е. фильтра для пользователей на странице не будет, но переменная filter будет не пустая и вся вышеописанная схема не будет работать корректно.
Как стоит сделать:
1. Формировать глобальную переменную в шаблоне, который отвечает у вас за отображение фильтра (это может быть шаблон eshop_filter_form, либо другой, например, шаблон для спецблока). Я использую такой прием - в сете field_submit добавляю:
##setglobalvar @g_has_filter = 1##
Это сет кнопки применения фильтра, которая выводится только когда есть какие-то поля в фильтре, поэтому обращение к этому сету и, соответственно, формирование глобальной переменной происходит только при наличии таких полей, что нам и нужно.
2. Если фильтр расположен в блоке, который не будет выводится на каких-то категориях, то нужно, чтобы он обязательно выводился в основном блоке странице, в ранее упомянутых сетах body_items и body_search (изначально он там всегда есть, а если показывать на странице в этом месте его не нужно, то используйте визуально скрытие - оберните в блок со стилем display: none). В противном случае в категориях без фильтра могут перестать работать сортировка и пагинация.
Добавлено: Доп. колонка в макете при определенном условии29.04.20 22:25:20