Suche
Suche
Die Suche von BX Sites ist vollständig statisch und clientseitig - derselbe
Ansatz, den mkdocs standardmäßig verwendet: ein
einmal zur build-Zeit erstellter Index, und lunr.js
übernimmt die eigentliche Suche im Browser des Besuchers. Es gibt keinen
Server, keine Datenbank und keinen externen Suchdienst.
Wie es funktioniert
- Zur
build-Zeit durchläuftSearchIndexerjede nicht versteckte Seite und schreibtsite/search-index.json: ein Eintrag pro Seite mit ihremtitle, ihrerurl, dentagsaus der Frontmatter, dem Text jeder Überschrift auf der Seite und einer gekürzten Klartext-Kopie ihres Inhalts (HTML-Tags entfernt). - Das
search.bxm-Partial jedes Themes rendert eine Suchbox;layout.bxmbindet sie (und die Skriptelunr.js+ gemeinsamessearch.js) nur ein, wennsearchinbxsites.jsontrueist. - Im Browser lädt das gemeinsame
assets/search.js-Widget einmaligsearch-index.json, baut daraus einenlunr-Index (titleam höchsten gewichtet, danntagsaus der Frontmatter, dannheadings, dann der reine Fließtext) und durchsucht ihn bei jedem Tastendruck neu- kein Netzwerk-Roundtrip pro Anfrage.
Tastaturkürzel
/fokussiert die Suchbox von überall auf der Seite (außer du tippst bereits in ein anderes Feld) - dieselbe Konvention, die mkdocs-material verwendet.Escapeschließt das Ergebnis-Dropdown und entfernt den Fokus von der Suchbox.
Ausschalten
{ "search": false }
Überspringt den Aufbau von search-index.json vollständig und
überspringt die Suchbox, das vendorierte lunr.js-Skript sowie das
gemeinsame search.js-Widget auf jeder gerenderten Seite - ein Projekt
mit deaktivierter Suche liefert überhaupt nichts Suchbezogenes aus.
Nur den Index neu aufbauen
bxSites search-index
Nützlich, wenn du nur search-index.json auffrischen musst - build
erledigt das bereits als einen seiner eigenen Schritte, du musst dies
also nach einem normalen Build nicht separat ausführen.