Hugo Site Search mit Pagefind

Nachdem ich ja schon seit September 2024 meine Webpräsenz mit Hugo pflege, habe ich nun die Zeit gefunden, ein bisher noch fehlendes Feature nachzurüsten: die Website Suche.
Eine solche Suche gibt es ja bei den gängigen CMS entweder ‘out-of-the-box’ oder als Plugin, bei einem SSG wie Hugao ist das aber nicht so.
Deswegen habe ich mich immer mal wieder nach einer solchen Erweiterung umgesehen, und bin nun bei Pagefind angekommen.
Der wichtigste Grund hierfür war, dass ich hierzu fast nichts an der bestehenden Struktur ändern musste, und vor allem auch kein PHP und/oder Datenbank notwendig ist.
Natürlich gestaltete sich das Ganze dann doch nicht ganz so einfach wie gedacht, aber ein halber Tag Arbeit bis zu einer ersten funktionsfähigen Version ist m.E. allemal akzeptabel.
Es galt hier, zuerst die grundsätzliche Arbeitsweise von Pagefind zu verstehen und diese dann im konkreten Fall umzusetzen.
Prinzipiell ist Pagefind ein Command-Line Tool, das NACH dem Erstellen der statitschen Site mit Hugo aufgerufen werden muss, wodurch dann anhand der aktualisierten Inhalte der Index aufgebaut wird, der dann der in die statische Seite nachträglich eingebauten Suchfunktion zur Verfügung steht.
Der einfache Aufruf von hugo server ergibt hier also keine auf http://localhost:1313 abfrufbare Seite incl. Suchfunktion !
Stattdessen muss im Verzeichnis wo die mit hugo erzeugten statischen Seiten sind, nun npx pagefind aufgerufen werden, und sofern hier noch --serve angehängt wird, kann auf http://localhost:1414 die Seite incl. Suchfunktion getestet werden.
Allerdings ist diese auch nicht wirklich vollständig, denn absolut referenzierte Bilder fehlen hier (werden nicht gefunden). Das ist nicht weiter schlimm, man muss aber wissen wo das her kommt und dass es mit dem Kopieren auf den ’echten’ Server der als baseURL in der Datei config.toml definiert ist, behoben ist.
Desweiteren sollte noch festgelegt werden, welche Seiten NICHT in den Index aufgenommen werden sollen, oder sogar besser: anders herum .
Dies erreicht man am einfachsten mit einer angepassten Konfigurationsdatei, meine pagefind.yaml hat dazu aktuell den Eintrag
glob: "{about/**/*.html,allgemein/**/*.html,blog/**/*.html,forum/**/*.html,kde-linux-web/**/*.html}" in dem festgelegt wird, welche Seiten indiziert werden.
Desweiteren musste ich noch zwei Templates (post-navigation.html, post-related.html) anpassen, und zwar so, dass die Prev/Next Links bzw. die related Posts unter jeder Blog-Seite NICHT indiziert werden. Damit bin ich vorerst zufrieden - die Suche ist schnell und hilfreich, vor Allem in Anbetracht der inwischen fast 240 Blog-Seiten (und dazu kommen ja auch noch die aus dem Hautpmenü).