Appearance
Установка виджета Relavio Search
Виджет Relavio Search подключается на сайт через один JavaScript-файл и HTML-контейнер. После загрузки скрипта он сам находит элементы с атрибутом data-relavio-search-widget, добавляет поле поиска, стили, голосовой ввод и обработчики запросов к API.
Требования
Перед установкой подготовьте:
- API-ключ проекта Relavio;
- импортированные товары в поисковом индексе;
- страницу сайта, где должен отображаться поиск;
- доступ к изменению HTML-шаблона или блока CMS.
Базовое подключение
Добавьте контейнер в нужное место страницы:
html
<div
data-relavio-search-widget
data-api-key="YOUR_API_KEY"
></div>Подключите скрипт перед закрывающим тегом </body>:
html
<script src="https://relavio.su/js/search-widget.js"></script>По умолчанию виджет запускается в режиме search: пользователь вводит запрос, а под полем открывается список найденных товаров.
Установка подсказок в шапку сайта
Для шапки сайта обычно лучше подходит режим suggests. Он показывает историю, подсказки, категории и товары без необходимости сразу открывать страницу каталога.
html
<div class="site-header__search">
<div
data-relavio-search-widget
data-api-key="YOUR_API_KEY"
data-behavior="suggests"
data-placeholder="Найти товар"
></div>
</div>
<script src="https://relavio.su/js/search-widget.js"></script>Пользователь может выбрать подсказку, категорию или товар. Если товар содержит ссылку, клик ведет на страницу товара и отправляет событие аналитики.
Установка на страницу поиска
Для отдельной страницы поиска используйте режим catalog или catalog-with-filters.
html
<main class="search-page">
<h1>Поиск товаров</h1>
<div
data-relavio-search-widget
data-api-key="YOUR_API_KEY"
data-behavior="catalog-with-filters"
data-placeholder="Введите название, бренд или категорию"
data-columns="4"
data-catalog-rows="4"
></div>
</main>
<script src="https://relavio.su/js/search-widget.js"></script>В этом режиме результаты отображаются сеткой, а фильтры строятся из ответа API.
Автоматическая инициализация
Скрипт автоматически вызывает RelavioSearchWidget.initAll() после загрузки страницы. Повторная инициализация уже готового контейнера не выполняется: виджет помечает элемент атрибутом data-relavio-search-widget-ready="true".
Это позволяет безопасно размещать несколько виджетов на одной странице:
html
<div data-relavio-search-widget data-api-key="YOUR_API_KEY" data-behavior="suggests"></div>
<div data-relavio-search-widget data-api-key="YOUR_API_KEY" data-behavior="catalog"></div>Ручная инициализация
Если контейнер создается динамически, например после AJAX-навигации или открытия модального окна, инициализируйте его вручную:
html
<div id="relavio-search"></div>
<script>
const element = document.getElementById('relavio-search');
window.RelavioSearchWidget.init(element, {
apiKey: 'YOUR_API_KEY',
behavior: 'suggests',
placeholder: 'Поиск по каталогу',
});
</script>Можно также вызвать повторный поиск всех неинициализированных контейнеров:
html
<script>
window.RelavioSearchWidget.initAll();
</script>Проверка после установки
После подключения проверьте:
- поле поиска появилось на странице;
- при вводе запроса отправляется запрос к
/api/v1/searchили/api/v1/search/suggests; - в запросах есть заголовок
api-key; - товары отображаются с названием, ценой, изображением и ссылкой;
- клик по товару отправляет событие в
/api/v1/search/events; - в режиме каталога работает пагинация;
- в режиме
catalog-with-filtersотображаются фильтры.
Частые проблемы
Виджет не появился
Проверьте, что скрипт загружен без ошибки, контейнер содержит data-relavio-search-widget, а на странице нет JavaScript-ошибок.
Запросы возвращают ошибку авторизации
Проверьте API-ключ в data-api-key или в параметре apiKey при ручной инициализации.
Нет товаров в выдаче
Убедитесь, что товары импортированы и проиндексированы. Также проверьте, что запрос длиннее минимального значения data-min-length.
Не работает голосовой ввод
Голосовой ввод зависит от поддержки Web Speech API в браузере. Если API недоступен, кнопка микрофона будет отключена.
