Сортировка по цене в каталоге с торговыми предложениями в 1С-Битрикс: Управление сайтом

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

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

  • Минимальная цена (MINIMUM_PRICE).
  • Максимальная цена (MAXIMUM_PRICE).

В настройках компонента (для примера bitrix:catalog.section) укажем сортировку по минимальной цене:

"ELEMENT_SORT_FIELD" => "PROPERTY_MINIMUM_PRICE",
"ELEMENT_SORT_ORDER" => "ASC"

Теперь нам потребуется решить проблему заполнения этих полей с учетом того, что администратор будет добавлять только торговые предложения. Для этого в файле /bitrix/php_interface/init.php регистрируем обработчик для событий

  • OnAfterIBlockElementUpdate — вызывается после изменения элемента;
  • OnAfterIBlockElementAdd — вызывается после добавления элемента;
  • OnPriceAdd — вызывается при добавлении новой цены;
  • OnPriceUpdate — вызывается в процессе изменения свойств товара)

который будет заполнять (обновлять) созданные в требуемом нам каталоге товаров.

Пример (обработчик BXIBlockAfterSave и регистрация для событий)  можно посмотреть в стандартном решении интернет-магазин в файле /bitrix/php_interface/init.php.

 

Координационный
совет SPECIA
Санкт-Петербург,
8-я Красноармейская ул., д.10