PureWiki verarbeitet Benutzeranfragen nach Inhalten (das öffentliche Wiki) mithilfe einer effizienten Routing- und Rendering-Engine. Dieser Leitfaden erklärt, wie das System eine URL in eine vollständig realisierte HTML-Seite übersetzt.
Der Router (index.php)
Jede Anfrage durchläuft die index.php. Sie normalisiert die angeforderte URL und bestimmt, ob der Pfad auf /setup, eine Dashboard-Route oder eine reguläre Wiki-Seite verweist.
purewiki/frontend/renderer.php) delegiert.Bevor eine öffentliche Seite gerendert wird, behandelt der Router der Reihe nach diese Fälle:
- Setup: Ohne Konfiguration wird der Setup-Assistent angezeigt.
- Dashboard: Routen unter
/dashboarderfordern eine Anmeldung und eine ausreichende Rolle und laden dann einen Controller auspurewiki/admin/. - Sprachpräfix: Bei aktivierter i18n wählt ein Sprachpräfix die Sprachversion. Das Präfix der Standardsprache wird per 301 auf die saubere URL umgeleitet.
- Vorschau:
?preview=1rendert den Entwurf für angemeldete Benutzer und überspringt den Cache. - Private Seiten und Weiterleitungen: Besucher einer privaten Seite werden auf die Startseite geschickt. Seiten mit aktivierter Weiterleitung schicken Besucher auf die Ziel-URL.
- Cache: Ist das Caching aktiviert, erhalten Besucher die gespeicherte HTML-Datei.
Die Rendering-Engine
Die Funktion renderPage() ist das Herzstück der PureWiki-Generierung. Sie übernimmt:
- Datenextraktion: Parst die
page.json, um Metadaten und Blöcke abzurufen. - Inhalts-Parsing: Blöcke werden über
purewiki/frontend/parser.phpin semantisches HTML umgewandelt. - Theme-Injektion: Die aggregierten Daten und der HTML-Inhalt werden an das aktive Theme-Template übergeben. Die Farbüberschreibungen aus den Theme-Farben werden dem Head hinzugefügt.
- Platzhalter-Ersetzung: Ersetzt spezialisierte Platzhalter (z. B.
{{ content }},{{ assets_head }}) innerhalb der Theme-Ausgabe.
Der Caching-Mechanismus (/cache)
Um blitzschnelle Antwortzeiten zu ermöglichen, verwendet PureWiki ein robustes statisches HTML-Caching-System.
Sitemap (sitemap.xml)
PureWiki generiert dynamisch eine sitemap.xml, um die Indexierung durch Suchmaschinen zu unterstützen. Sie wird aus dem Wiki-Root ausgeliefert und folgt dem sitemaps.org Standard.
getCachedPagesTree()) und schließt private Seiten automatisch aus. Die Priorität wird dynamisch basierend auf der Seitentiefe berechnet.Assets bei Bedarf
Bibliotheken werden nur auf Seiten geladen, die sie benötigen. Beim Parsen fordern die Blöcke Prism.js (Code-Blöcke), KaTeX (Formeln) und Iconify (Icons) über den AssetManager an. Erweiterungen können eigene Dateien hinzufügen, siehe Erweiterungs-Entwicklung.