Приоритет мульти склада в поисковой выдаче InSales
Настройка приоритетной выдачи товаров по складам в поиске InSales. Покупатель сначала видит товары своего региона, потом остальные. Решение через API и JavaScript.
Краткая информация
- Платформа InSales
- Функционал Приоритет складов
- Технологии API + JavaScript
- Пример ucontay.ru
Задача
Магазин с несколькими складами хочет показывать товары в поиске с приоритетом: сначала товары со склада региона покупателя, потом с остальных.
Например, покупатель из Москвы ищет "плед". Первыми показываем пледы с московского склада, потом с остальных.
Проблема
Стандартная поисковая выдача InSales работает на Liquid. Она не позволяет сортировать по меткам складов. Чтобы это сделать, нужно переделать страницу на JavaScript.
При большом количестве товаров (1000+) страница загружается медленно. Почему: InSales отдает все товары сразу, даже если нужны только с одной меткой. Приходится сортировать на клиенте.
Варианты решения
1. AJAX-подгрузка без пагинации
Товары подгружаются постепенно при прокрутке страницы. Один запрос получает все товары, сортирует их на клиенте. Пример: benordic.ru.
Минус: при большом каталоге первая загрузка все равно медленная.
2. Сторонний сервер
InSales — облачная платформа, доступа к серверу нет. Но можно использовать свой сервер. Отправляем запрос на сервер, он обращается к API InSales, получает товары по нужным параметрам, сортирует, возвращает результат.
Плюс: быстро работает даже с большими каталогами.
3. Своя пагинация через JavaScript
Создаем пагинацию на JavaScript. Переключение между страницами происходит мгновенно без перезагрузки. Перезагрузка только при смене сортировки.
Реализация
Выбрали вариант со сторонним сервером и своей пагинацией:
- Покупатель вводит поисковый запрос
- Отправляем запрос к API InSales
- Получаем массив товаров
- Сортируем по метке склада (сначала товары с нужной меткой)
- Разбиваем на страницы
- Выводим через JavaScript
Метки складов
Каждый товар имеет метку склада (например, "Москва", "Санкт-Петербург"). По этой метке определяем приоритет в выдаче.
Технические детали
API InSales
API позволяет получать товары с фильтрацией. Запрашиваем товары по поисковому запросу, получаем массив с полными данными: название, цена, изображение, метки.
Сортировка по меткам
Получаем все товары, делим на два массива: с нужной меткой и с остальными. Объединяем массивы в правильном порядке.
Вывод через JavaScript
Верстка страницы создается через JavaScript. Берем отсортированный массив, генерируем HTML карточек товаров, вставляем на страницу.
Результат
- Покупатель видит сначала товары своего региона
- Быстрая загрузка даже с большим каталогом
- Пагинация работает без перезагрузки страницы
- Совместимо со стандартными и кастомными темами InSales
Пример реализации: страница поиска ucontay.ru
Похожие кейсы
- Создание SEO категорий и перелинковка каталога
- Оптимизация скорости загрузки InSales
- Улучшаем поиск магазина с мультискладом