Hecho con Chinaski

search.tt

search.tt es la página de búsqueda pública de un site de Chinaski: una búsqueda tematizada y autocontenida, built por idioma, con la búsqueda ejecutándose completamente en el navegador del visitador. Sin procesamiento del servidor, sin servicio externo: la página hace fetch de un índice JSON generado y lo filtra localmente.

Qué renderiza

  • Un search form (con autofocus, role="search"): el parámetro q de lectura/escritura.
  • Una región de resultados que se actualiza en vivo (aria-live="polite" anunciado a usuarios de screen readers), con conteo de resultados y entradas de title-link/excerpt, cada una estilizada por el CSS de búsqueda inline del theme por defecto.
  • El chrome estándar del site: partials de header y footer: incluido como de costumbre, con la página marcada explícitamente noindex en su <head> (una utility page: las páginas de búsqueda nunca aparecen en sitemaps ni en resultados de búsqueda).

Cómo se comporta la búsqueda

  • Fuente de datos: <url_base>/search-index.json, generado por idioma en build time (una entrada por página/post publicado de ese idioma: título, URL, excerpt). La página hace fetch de este archivo la primera vez que corre un query y lo reutiliza en memoria después.
  • Matching: matching por subcadena en títulos y excerpts (insensibilidad a mayúsculas aplicada localmente): la lista de resultados linkea a través de los result items del theme con un excerpt bajo cada hit.
  • Estados vacíos: texto "No results for …" para cero coincidencias; "Search index unavailable." cuando el fetch del índice falla por completo.
  • Compartir queries: enviar una búsqueda reescribe la URL para incluir ?q=<query>, así que pegar una URL de búsqueda reproduce los resultados al cargar (el q inicial se respeta cuando la página renderiza).
  • Fallo suave: la línea de conteo ("N result(s) for …") más los mensajes de no-hits/no-index renderizan dentro de la región de resultados; el resto de la página (header/footer, navegación) no se ve afectado.

Comportamiento por idioma

Las páginas de búsqueda se buildean por idioma: cada idioma tiene su propia página /search/ y su propio <url_base>/search-index.json, así que la búsqueda de un idioma nunca muestra contenido de otro idioma. La política de resultados lleva las mismas implicaciones de caché (un build fresco regenera el índice; la copia cacheada se muestra hasta el próximo fetch).

Personalización del theme

El estilo inline de la página de búsqueda se incluye en la template. Los themes que quieran visuales distintos sobreescriben el archivo search.tt mismo: el INCLUDE del header/footer estándar y de _<head> se mantiene justificable bajo la misma estructura de archivos de template; con los cambios de stylesheet de búsqueda incluidos en tu theme mientras el formato del índice es fijo.

Lee este sitio en