Когда сортировка товаров не работает, покупатель не может быстро найти дешевый, новый или популярный товар. Для каталога это напрямую влияет на глубину просмотра и конверсию.

Сначала проверьте, доходит ли выбранный порядок сортировки до backend. Если параметр приходит, нужно смотреть SQL, индекс, кеш и связку с фильтрами.

Коротко: что сделать

  • Проверить URL или ajax-параметр сортировки
  • Сравнить сортировку на первой и следующих страницах
  • Проверить SQL-запрос и ORDER BY
  • Проверить кеш каталога и ajax-ответ
  • Проверить сочетание сортировки с фильтрами и наличием

Основные причины

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

  • Frontend меняет select, но не отправляет параметр на сервер
  • Backend игнорирует параметр или сбрасывает его при пагинации
  • SQL сортирует текстовые цены как строки
  • Кеш отдает старый порядок товаров
  • Фильтр и сортировка используют разные источники данных

Пошаговая диагностика

Диагностику удобнее вести на одном воспроизводимом примере: один пользователь, один заказ, один запрос, один файл или одно событие. Так проще отделить реальную причину от случайных совпадений.

  • Открыть Network и посмотреть запрос после смены сортировки
  • Проверить ответ API или HTML-фрагмент каталога
  • Выполнить SQL вручную на тестовой выборке
  • Проверить сортировку цены, даты и популярности отдельно
  • Проверить, сохраняется ли sort при переходе на страницу 2

Как исправить проблему

Исправление должно закрывать первопричину. Если затронуты платежи, доступы, персональные данные, уведомления или рабочие заказы, сначала проверьте решение на тестовом сценарии и сохраните возможность отката.

  • Передавать sort явно в URL или ajax-запросе
  • Нормализовать белый список допустимых сортировок
  • Исправить типы данных цены и даты
  • Сбросить или разделить кеш по параметрам sort/filter/page
  • Добавить тесты на сортировку популярных сценариев

Безопасный план решения

Не подставляйте пользовательский sort напрямую в SQL. Сделайте белый список полей и направлений сортировки, иначе каталог можно сломать или открыть путь к SQL-инъекции.

Чего не стоит делать

  • Не сортировать цену как строку
  • Не терять sort при пагинации
  • Не кешировать один HTML каталога для всех сортировок
  • Не доверять произвольному полю сортировки из URL

Что подготовить перед исправлением

  • URL каталога
  • Какая сортировка выбрана и какой результат ожидается
  • Пример товаров, которые стоят не на месте
  • CMS или framework сайта
  • Есть ли ajax-фильтры и кеш

FAQ

Почему сортировка работает без фильтра, но ломается с фильтром?

Часто фильтр использует другой запрос или перезаписывает параметры каталога. Нужно объединить условия фильтра и ORDER BY.

Почему цена сортируется неправильно?

Если цена хранится или форматируется как текст, порядок будет лексикографическим, например 100 может идти перед 20.

Нужно ли индексировать поля сортировки?

Для больших каталогов да, иначе сортировка может быть медленной и падать на больших выборках.

Когда стоит обратиться за помощью

Помощь нужна, если каталог приносит заявки или продажи, а сортировка ломает выбор товара на мобильных и desktop-страницах.

Итог

Проверьте параметр sort, SQL, кеш и пагинацию. Если нужно быстро починить сортировку товаров в каталоге, пишите в Telegram @rabotator_support.