Нестандартная сортировка товаров

Все мы видели блок сортировок в различных интернет-магазинах, новостных порталах, блогах или прочих аналогичных веб-сайтах. Обычно, это сортировка "по названию", "по цене", "по наличию", "по дате".

А что, если необходимо задать приоритет для элементов по более сложным условиям? Например, продвигать товары одного бренда определённого цвета по сравнению с другими. Или размещать сезонные товары, начиная с какой то цены, выше остальных. Или определить "популярность" для товаров на своем интернет-ресурсе по своему усмотрению, путем выбора нужных значений параметров товаров...

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

  1. Создаем служебное свойство или свойства (зависит сколько нестандартных индексов сортировки нужно) элементов инфоблока, преимущественно типа "Число". Назовём его "Индекс сортировки 1".
  2. Определяем набор параметров, от которых зависит те или иные значения "Индекса сортировки 1".
  3. С помощью механизма коллекций модуля настраиваем профили для заполнения созданного нами свойства. Включаем для этих профилей автоматическую индексацию.




[spoiler]
Допустим у нас есть несколько групп товаров, которые нужно размещать выше остальных.

I-ая группа - высший приоритет, следовательно наибольшее значение, для "Индекса сортировки 1".
Например, в эту группу попадают товары, имеющие следующие параметры:
  • Производитель: Россия.
  • Цвет: Зеленый.
  • Цена: более 5 000 руб.
У данного набора товаров будем заполнять значения служебного свойства равным 300.


II-ая группа имеет следующие характеристики:
  • Производитель: Китай.
  • Название: содержит фразу "Эко".
  • В наличии.
Для этой группы "Индекс сортировки 1" задаем равным 200, т.е. в итоге создаем для групп порядок по убыванию.


III-ая группа - все остальные товаров, можно оставить как есть, т.е. "Индекс сортировки 1"  останется для остальных товаров пустым.


На этом служебное свойство, имеющее нужные значения для элементов, готово. Далее останется использовать его в публичной части в списке товаров или новостей.
Подобный подход значительно уменьшает трудозатраты программиста, что несомненно БОЛЬШОЙ ПЛЮС.