search.tt
search.tt é a página de busca pública de um site Chinaski : uma busca tematizada e autocontida construída por idioma, com a busca executando inteiramente no navegador do visitante. Nenhum processamento de servidor, nenhum serviço externo: a página busca um índice JSON gerado e o filtra localmente.
O que renderiza
- Um formulário de busca (autofocado,
role="search"), com o parâmetro lido/escritoq. - Uma região de resultados com atualização ao vivo (
aria-live="polite"anunciada aos usuários de leitores de tela), com contagem de resultados e entradas de título-link/excerto, cada uma estilizada pelo CSS de busca inline do tema padrão. - O chrome padrão do site : partials de header e rodapé : incluídos como usual, com a página explicitamente marcada como noindex no seu
<head>(uma página de utilidade: páginas de busca nunca aparecem em sitemaps ou resultados de busca).
Como a busca se comporta
- Fonte de dados:
<url_base>/search-index.json, gerado por idioma em tempo de build (uma entrada por página/post publicado daquele idioma : título, URL, excerpt). A página busca este arquivo na primeira vez em que uma query executa e o reutiliza na memória depois. - Correspondência: correspondência de substring em títulos e excertos (insensibilidade a caixa aplicada localmente) : a lista de resultados aponta através dos itens de resultado do tema com um excerto sob cada acerto.
- Estados vazios: texto “No results for …” para zero correspondências; “Search index unavailable.” quando a busca do índice falha inteiramente.
- Compartilhamento de queries : submeter uma busca reescreve a URL para incluir
?q=<query>, de modo que colar uma URL de busca reproduz os resultados no load (o q inicial é honrado quando a página renderiza). - Falha graciosamente: a linha de contagem (“N result(s) for …”) mais as mensagens de sem-acertos/sem-índice renderizam dentro da região de resultados; o resto da página (header/rodapé, navegação) fica inafetado.
Comportamento por idioma
Páginas de busca constroem por idioma: cada idioma tem sua própria página /search/ e seu próprio <url_base>/search-index.json, de modo que a busca de um idioma nunca expõe o conteúdo de outro. A política de resultados carrega as mesmas implicações de cache (um build fresco regenera o índice; a cópia cacheada mostra até a próxima busca).
Personalização de tema
O estilo inline da página de busca embarca no template. Temas que querem visuais diferentes sobrescrevem o próprio arquivo search.tt : o INCLUDE do header/rodapé padrão e de _head permanece justificável sob a mesma estrutura de arquivo de template; com as mudanças de stylesheet de busca embarcadas no seu tema enquanto o formato do índice é fixo.