Порядок, в котором покупатель видит товары, напрямую влияет на конверсию: наверху должно оказаться то, что легче продать. В 1С-Битрикс сортировка задаётся в двух местах одновременно — в настройках компонента каталога и в самом инфоблоке, и важно понимать, как эти уровни взаимодействуют.
Где задаётся сортировка в каталоге
За вывод списка товаров отвечает комплексный компонент bitrix:catalog, внутри которого работает bitrix:catalog.section. Именно в его параметрах на вкладке «Настройки списка товаров» находятся два поля сортировки по умолчанию:
ELEMENT_SORT_FIELD— основное поле сортировки (например,sort,name,catalog_PRICE_1);ELEMENT_SORT_ORDER— направление (ascилиdesc);ELEMENT_SORT_FIELD2иELEMENT_SORT_ORDER2— второе поле, по которому сортируются товары с одинаковым значением первого.
Второй уровень настройки — само свойство «Сортировка» у каждого элемента инфоблока (поле SORT). Компонент по умолчанию берёт именно его: чем меньше число, тем выше товар в списке. Таким образом, поля компонента определяют стратегию, а значения SORT у элементов — ручной порядок внутри этой стратегии.
Сортировка по умолчанию: поле SORT и индекс
Базовый и самый предсказуемый вариант — сортировка по полю sort по возрастанию, а вторым полем по id. Значение индекса сортировки задаётся в карточке товара в поле «Сортировка» (по умолчанию 500). Меняя эти числа, контент-менеджер вручную поднимает нужные позиции наверх раздела.
Удобный приём — оставлять шаг между значениями: 100, 200, 300, а не 1, 2, 3. Тогда для вставки товара между двумя существующими не придётся пересохранять весь раздел — достаточно поставить, например, 150.
Если товаров тысячи и порядок задаётся вручную неудобно, разумнее сортировать по осмысленному признаку — цене, дате создания или пользовательскому свойству, — а поле SORT оставить как «ручной приоритет» только для избранных позиций.
Переключатель сортировки для покупателя
Чтобы посетитель сам выбирал порядок («сначала дешёвые», «по популярности», «по новизне»), в компоненте включается параметр USE_ELEMENT_SORT = Y и заполняется таблица пользовательских вариантов сортировки. Каждый вариант — это пара «поле + направление» с человекочитаемым названием, которое видит покупатель.
Типичный набор вариантов для интернет-магазина:
| Название для покупателя | Поле | Направление |
|---|---|---|
| По популярности | SHOWS или свойство хитов | desc |
| Сначала дешёвые | catalog_PRICE_1 | asc |
| Сначала дорогие | catalog_PRICE_1 | desc |
| По новизне | created_date или id | desc |
| По названию | name | asc |
Выбранный вариант передаётся в URL параметром вида ?sort=price&order=asc и запоминается в рамках раздела. Первый вариант в списке становится сортировкой по умолчанию, поэтому ставьте наверх ту стратегию, которая лучше всего продаёт.
Сортировка по цене
Сортировка по цене — частый запрос, но и самый частый источник ошибок. Цена в Битрикс хранится не в самом элементе, а в отдельной таблице цен, поэтому в качестве поля нужно указывать не абстрактное price, а конкретный тип цены: catalog_PRICE_1, где 1 — идентификатор типа цены (ID из раздела «Магазин → Настройки → Типы цен»).
Для корректной работы по возрастанию/убыванию цены также следите, чтобы у всех участвующих товаров цена была заполнена: элементы без цены при сортировке asc уйдут наверх с нулём и испортят выдачу.
Наличие, хиты и бизнес-логика вывода
Хорошая витрина почти всегда сортируется по нескольким критериям сразу. Классический сценарий: сначала товары в наличии, внутри них — по популярности или ручному приоритету. Реализуется это связкой первого и второго поля сортировки.
- Первым полем ставим наличие. Удобно завести отдельное свойство или использовать
catalog_AVAILABLE— товары со значениемYуходят вперёд. - Вторым полем —
sortили свойство «хит продаж», чтобы внутри доступных товаров выстроить нужный порядок.
Признак «в наличии» и счётчики показов при этом должны обновляться автоматически — при обмене остатками из 1С и при просмотрах карточек. Если наличие вычисляется на лету, а не хранится в поле, сортировать по нему нельзя: сортировка выполняется на уровне SQL-запроса к базе, поэтому критерий обязан быть реальным полем или свойством элемента.
Сортировка по свойствам и производительность
Сортировать можно и по пользовательскому свойству инфоблока — по бренду, рейтингу, дате поступления. В поле сортировки такие свойства указываются как PROPERTY_BRAND или по ID: PROPERTY_25. Строковые и списочные свойства сортируются по значению, числовые — по числу, поэтому для рейтинга или объёма лучше использовать числовой тип, а не список.
Главный риск сортировки по свойствам — производительность. Каждое дополнительное поле сортировки добавляет джойн к запросу, а на больших каталогах это заметно нагружает MySQL. Что помогает:
- включённый фасетный индекс умного фильтра — он ускоряет и фильтрацию, и связанную с ней выборку;
- индексы в базе на часто используемые поля сортировки;
- кэширование компонента каталога и композитный кэш — выдача для одинаковых параметров сортировки не пересчитывается на каждый запрос.
Итог
Сортировка в каталоге Битрикс — это два уровня: стратегия в параметрах компонента bitrix:catalog.section (поля ELEMENT_SORT_FIELD и переключатель USE_ELEMENT_SORT) и ручной приоритет через поле SORT у элементов. Для продающей витрины комбинируйте наличие, популярность и цену, следите за корректностью цен у SKU и не забывайте про индексы и кэш на больших объёмах.
Если каталог большой, цены и остатки приходят из 1С, а сортировка должна учитывать реальную бизнес-логику — мы в B2Bsite настроим порядок вывода, свяжем его с фасетным индексом и обменом, чтобы витрина оставалась быстрой и удобной для покупателя.
Частые вопросы
Где в Битрикс задаётся порядок товаров по умолчанию?
В параметрах компонента bitrix:catalog.section, поля ELEMENT_SORT_FIELD и ELEMENT_SORT_ORDER. Обычно это сортировка по полю sort по возрастанию.
Как поднять конкретный товар наверх раздела?
Уменьшите значение поля «Сортировка» (SORT) в карточке товара — чем меньше число, тем выше позиция. Оставляйте шаг между значениями, чтобы удобно вставлять новые товары.
Почему сортировка по цене не работает?
Скорее всего в поле указано абстрактное price вместо catalog_PRICE_1 с ID нужного типа цены. Также цена может лежать на уровне торговых предложений, а не самого товара.
Как дать покупателю выбор сортировки?
Включите параметр USE_ELEMENT_SORT и заполните таблицу вариантов «поле + направление» с понятными названиями. Первый вариант станет сортировкой по умолчанию.
Можно ли сортировать так, чтобы товары в наличии были сверху?
Да, поставьте наличие первым полем сортировки, а популярность или sort — вторым. Признак наличия должен храниться в поле или свойстве, а не вычисляться на лету.
Как сортировать по пользовательскому свойству?
Укажите поле как PROPERTY_<КОД> или PROPERTY_<ID>. Для рейтингов и числовых величин используйте числовой тип свойства, иначе сортировка пойдёт по строке.
Влияет ли количество вариантов сортировки на скорость?
Да, каждый вариант — отдельный ключ кэша и отдельный запрос с джойнами. Не создавайте лишних вариантов и используйте фасетный индекс, индексы БД и кэширование компонента.
Запоминается ли выбранная покупателем сортировка?
Выбор передаётся в URL параметрами sort и order и сохраняется в пределах раздела каталога при переходах по страницам пагинации.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.