PureWiki verwendet ein einfaches, PHP-basiertes Templating-System für das Rendering des öffentlichen Frontends. Dieses System legt Wert auf Einfachheit und Leistung gegenüber komplexen Template-Sprachen wie Twig oder Blade.
Architektur
Themes befinden sich im Verzeichnis themes/. Die zentrale Layout-Datei heißt immer page.php.
Verzeichnisstruktur
themes/default/
├── page.php # Haupt-Layout-Datei
├── elements/ # Wiederverwendbare HTML-Snippets
│ ├── header.php
│ ├── content.php
│ └── footer.php
Leistungs-Tipp:
Verwende beim Einbinden statischer Snippets wie
header.php den Befehl echo file_get_contents(__DIR__ . '/path'), um den PHP-Parsing-Overhead zu minimieren.Platzhalter und Variablen
Platzhalter werden durch {{ variablen_name }} gekennzeichnet. Der Renderer ersetzt diese während des Build-Prozesses.
Verfügbare Systemvariablen
{{ content }}: Der gerenderte HTML-Inhalt der Seitenblöcke.{{ page_title }}: Der Titel der aktuellen Seite.{{ wiki_name }}: Der in den globalen Einstellungen konfigurierte Name.{{ wiki_description }}: Die globale Wiki-Beschreibung.{{ wiki_logo }}: URL zum Wiki-Logo.{{ wiki_favicon }}: URL zum Favicon.{{ author }}: Der letzte Autor, der die Seite gespeichert hat.{{ date_created }}/{{ date_modified }}: Lokalisierte Datumszeichenfolgen.{{ date_created_iso }}/{{ date_modified_iso }}: ISO-Format (Y-m-d).{{ current_year }}: Nützlich für Copyright-Footer.{{ current_theme }}: Name des aktiven Theme-Ordners.{{ context_path }}: Relativer URL-Pfad der aktuellen Seite.{{ assets_head }}: Injiziert CSS und Head-Skripte (Erforderlich im <head>).{{ assets_footer }}: Injiziert Footer-Skripte (Erforderlich vor </body>).
Bedingte Logik
Der Renderer unterstützt einfache {{ if variable }} und {{ endif }} Blöcke.
{{ if hide_left_sidebar }}
<!-- Seitenleiste ist über Seiteneinstellungen ausgeblendet -->
{{ else }}
<aside>
{{ virtual:left_sidebar }}
</aside>
{{ endif }}
Virtuelle Seiten und Makros
Themes verlassen sich auf Virtuelle Seiten ({{ virtual:name }}) für globale Inhalte und Makros ({{ macro:name }}) für dynamische Logik wie Suche oder Navigation.