Поиск по сайту
По умолчанию сайты Starlight включают полнотекстовый поиск на основе Pagefind, который является быстрым и не требующим большой пропускной способности инструментом поиска для статических сайтов.
Для включения поиска не требуется никакой настройки. Создайте и разверните свой сайт, а затем используйте строку поиска в шапке сайта для поиска контента.
Скрытие содержимого из результатов поиска
Исключение страницы
Чтобы исключить страницу из поискового индекса, добавьте pagefind: false
в метаданных страницы:
---title: Содержимое, которое нужно скрыть от поискаpagefind: false---
Исключение части страницы
Pagefind будет игнорировать содержимое внутри элемента с атрибутом data-pagefind-ignore
.
В следующем примере первый абзац будет отображаться в результатах поиска, а содержимое <div>
— нет:
---title: Частично проиндексированная страница---
Этот текст можно будет найти с помощью поиска.
<div data-pagefind-ignore>
Этот текст будет скрыт от поиска.
</div>
Альтернативные поставщики услуг поиска
Algolia DocSearch
Если у вас есть доступ к программе DocSearch от Algolia и вы хотите использовать её вместо Pagefind, вы можете воспользоваться официальным плагином Starlight DocSearch.
-
Установите
@astrojs/starlight-docsearch
:Окно терминала npm install @astrojs/starlight-docsearchОкно терминала pnpm add @astrojs/starlight-docsearchОкно терминала yarn add @astrojs/starlight-docsearch -
Добавьте DocSearch в конфигурацию Starlight
plugins
вastro.config.mjs
и передайте ему ваши AlgoliaappId
,apiKey
иindexName
:astro.config.mjs import { defineConfig } from 'astro/config';import starlight from '@astrojs/starlight';import starlightDocSearch from '@astrojs/starlight-docsearch';export default defineConfig({integrations: [starlight({title: 'Сайт с DocSearch',plugins: [starlightDocSearch({appId: 'YOUR_APP_ID',apiKey: 'YOUR_SEARCH_API_KEY',indexName: 'YOUR_INDEX_NAME',}),],}),],});
С этой обновлённой конфигурацией строка поиска на вашем сайте теперь будет открывать модальное окно Algolia вместо стандартного модального окна поиска.
Конфигурация DocSearch
Плагин Starlight DocSearch также поддерживает настройку компонента DocSearch с помощью следующих дополнительных опций:
maxResultsPerGroup
: Ограничивает количество результатов, отображаемых для каждой группы поиска. По умолчанию5
.disableUserPersonalization
: Предотвращает сохранение недавних поисков и избранных элементов пользователя в локальном хранилище. По умолчаниюfalse
.insights
: Включает плагин Algolia Insights и отправляет события поиска в ваш индекс DocSearch. По умолчаниюfalse
.searchParameters
: Объект, настраивающий параметры поиска Algolia.
Перевод пользовательского интерфейса DocSearch
По умолчанию DocSearch предоставляет только английские строки пользовательского интерфейса. Добавьте перевод модального пользовательского интерфейса для вашего языка, используя встроенную систему интернационализации Starlight.
-
Расширьте определение коллекции контента Starlight
i18n
схемой DocSearch в файлеsrc/content.config.ts
:src/content.config.ts import { defineCollection } from 'astro:content';import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders';import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';import { docSearchI18nSchema } from '@astrojs/starlight-docsearch/schema';export const collections = {docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),i18n: defineCollection({loader: i18nLoader(),schema: i18nSchema({ extend: docSearchI18nSchema() }),}),}; -
Добавьте переводы в JSON-файлы в
src/content/i18n/
.Это английские значения по умолчанию, используемые DocSearch:
src/content/i18n/en.json {"docsearch.searchBox.resetButtonTitle": "Clear the query","docsearch.searchBox.resetButtonAriaLabel": "Clear the query","docsearch.searchBox.cancelButtonText": "Cancel","docsearch.searchBox.cancelButtonAriaLabel": "Cancel","docsearch.searchBox.searchInputLabel": "Search","docsearch.startScreen.recentSearchesTitle": "Recent","docsearch.startScreen.noRecentSearchesText": "No recent searches","docsearch.startScreen.saveRecentSearchButtonTitle": "Save this search","docsearch.startScreen.removeRecentSearchButtonTitle": "Remove this search from history","docsearch.startScreen.favoriteSearchesTitle": "Favorite","docsearch.startScreen.removeFavoriteSearchButtonTitle": "Remove this search from favorites","docsearch.errorScreen.titleText": "Unable to fetch results","docsearch.errorScreen.helpText": "You might want to check your network connection.","docsearch.footer.selectText": "to select","docsearch.footer.selectKeyAriaLabel": "Enter key","docsearch.footer.navigateText": "to navigate","docsearch.footer.navigateUpKeyAriaLabel": "Arrow up","docsearch.footer.navigateDownKeyAriaLabel": "Arrow down","docsearch.footer.closeText": "to close","docsearch.footer.closeKeyAriaLabel": "Escape key","docsearch.footer.searchByText": "Search by","docsearch.noResultsScreen.noResultsText": "No results for","docsearch.noResultsScreen.suggestedQueryText": "Try searching for","docsearch.noResultsScreen.reportMissingResultsText": "Believe this query should return results?","docsearch.noResultsScreen.reportMissingResultsLinkText": "Let us know."}