Pesquisa no Site
Por padrão, sites Starlight incluem pesquisa de textos utilizando o Pagefind, que é uma ferramenta de pesquisa rápida e de baixo uso de banda para sites estáticos.
Nenhuma configuração é necessária para habilitar a pesquisa. Faça o build e o deploy de seu site, e utilize a barra de pesquisa no cabeçalho do site para encontrar um conteúdo.
Ocultar conteúdo no resultado da pesquisa
Seção intitulada “Ocultar conteúdo no resultado da pesquisa”Para excluir uma página do seu índex de pesquisa, adicione pagefind: false
ao frontmatter da página:
---title: Conteúdo para ocultar da pesquisapagefind: false---
Exclua parte de uma página
Seção intitulada “Exclua parte de uma página”Pagefind vai ignorar conteúdos dentro de um elemento com o atributo data-pagefind-ignore
.
No exemplo a seguir, o primeiro parágrafo será exibido nos resultados de pesquisa, mas o conteúdo dentro da <div>
não:
---title: Página parcialmente indexada---
Esse texto pode ser encontrado por uma pesquisa.
<div data-pagefind-ignore>
Esse texto será omitido da pesquisa.
</div>
Provedores de pesquisa alternativos
Seção intitulada “Provedores de pesquisa alternativos”Algolia DocSearch
Seção intitulada “Algolia DocSearch”Se você tiver acesso ao programa DocSearch da Algolia e quiser utilizá-lo no lugar do Pagefind, você pode utilizar o plugin oficial do Starlight DocSearch.
-
Instale
@astrojs/starlight-docsearch
:Terminal window npm install @astrojs/starlight-docsearchTerminal window pnpm add @astrojs/starlight-docsearchTerminal window yarn add @astrojs/starlight-docsearch -
Adicione DocSearch à sua configuração de
plugins
do Starlight emastro.config.mjs
e passe para ele seuappId
,apiKey
, eindexName
da Algolia: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: 'Site com DocSearch',plugins: [starlightDocSearch({appId: 'SEU_APP_ID',apiKey: 'SUA_API_KEY_DE_BUSCA',indexName: 'NOME_DO_SEU_INDEX',}),],}),],});
Com essa configuração atualizada, a barra de pesquisa no seu site agora vai abrir um modal da Algolia ao invés do modal de pesquisa padrão.
Traduzindo a UI do DocSearch
Seção intitulada “Traduzindo a UI do DocSearch”DocSearch só provê strings de UI em inglês por padrão. Adicione traduções para sua linguagem à UI do modal utilizando o sistema de internacionalização integrado do Starlight.
-
Estenda a definição de coleções de conteúdo
i18n
do Starlight com o esquema do DocSearch emsrc/content/config.ts
:src/content/config.ts import { defineCollection } from 'astro:content';import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';import { docSearchI18nSchema } from '@astrojs/starlight-docsearch/schema';export const collections = {docs: defineCollection({ schema: docsSchema() }),i18n: defineCollection({type: 'data',schema: i18nSchema({ extend: docSearchI18nSchema() }),}),}; -
Adicione traduções aos seus arquivos JSON em
src/content/i18n/
.Esses são os textos padrões em inglês utilizados pelo 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.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."}