Настройка поиска
Возможно, потребуется настроить поведение поиска для сценариев, таких как:
- Обработка поисковых запросов, например удаление чувствительных слов.
- Фильтр результатов встроенного полнотекстового поиска.
- Отправка отчётов о введённых поисковых запросах.
- Подмена источника поисковых данных (например, поиск в базе данных).
- Отрисовка результатов из собственного источника поиска.
Rspress предоставляет интерфейсы для расширения поисковых компонентов стандартной темы, чтобы можно было настраивать поведение поиска.
Знакомство с searchHooks
Используйте опцию search.searchHooks в конфигурации Rspress, чтобы зарегистрировать хуки поисковых компонентов:
Значение search.searchHooks — это путь к файлу. Этот файл экспортирует логику хуков, например onSearch, позволяя настраивать поиск во время выполнения. Мы называем такой файл модулем searchHooks.
Функции-хуки в searchHooks
Модуль searchHooks поддерживает хуки beforeSearch, onSearch, afterRender и render.
В модуле searchHooks экспортируйте только те функции-хуки, которые вам нужны.
beforeSearch
Хук beforeSearch выполняется перед началом поиска. Используйте его для обработки или отправки поисковых запросов.
Хук поддерживает асинхронные операции.
Пример:
onSearch
Хук onSearch выполняется после завершения стандартного полнотекстового поиска. Используйте его для фильтрации или отправки результатов поиска, либо для добавления собственного источника данных поиска.
Хук поддерживает асинхронные операции.
Пример:
Хук onSearch возвращает массив результатов источников поиска. Каждый элемент имеет следующую структуру:
result — это результат поиска и может иметь любую необходимую структуру. renderType управляет способом отображения результата. Если указано значение RenderType.Default, Rspress использует стандартную логику рендеринга. Если указано RenderType.Custom, Rspress использует функцию render.
afterSearch
Хук afterSearch выполняется после отображения результатов поиска. Используйте его для доступа к итоговым поисковым запросам и результатам.
Хук поддерживает асинхронные операции.
Пример:
render
Функция render отвечает за отрисовку данных из пользовательского источника поиска, который вы добавили в хуке onSearch. Поэтому её обычно используют вместе с onSearch. Пример использования:
Вот как выглядит результат:


