<p>© 2026 conf:title</p>
<nav class="footer-links">
<a href="?id=impressum">menu_imprint</a> |
<a href="?id=datenschutz">menu_privacy</a> |
<a href="?id=sitemap">menu_sitemap</a>
</nav>
</div>
</footer>
</code>
Funktionsweise
Verarbeitungs-Pipeline
1. Syntax-Erkennung
└── Findet alle {{wvds:snippet>...}} Tags
2. Snippet-Lookup
└── Sucht Snippet-Datei: snippets/{key}.html
└── Lädt den HTML-Inhalt aus der Datei
3. wvdsi18n-Verarbeitung
└── Ersetzt ... Tags im Snippet
└── Wendet aktuelle Sprache an
4. HTML-Ausgabe
└── Fügt verarbeiteten HTML-Code in Seite ein
└── Keine zusätzliche Escaping (Raw HTML)
Verarbeitungsreihenfolge
| Priorität | Plugin | Sort-Wert |
| 1 | wvdsi18n | 305 |
| 2 | wvdssnippet | 310 |
| 3 | wvdsimage | 319 |
wvdsi18n wird vor wvdssnippet verarbeitet, damit Übersetzungen in Snippets funktionieren.
Integration
Mit wvdsi18n
Snippets unterstützen alle wvdsi18n-Syntaxen:
Datei: lib/plugins/wvdssnippet/snippets/multilingual_block.html
<div class="info">
greeting
de:Hallo|en:Hello|sl:Zdravo
{{wvds:lang:en>english_only_text}}
</div>
Typische Sidebar-Struktur:
~~NOCACHE~~
{{wvds:snippet>go_back}}
{{wvds:acmenu}}
Mit wvdsimage
Snippets können auch Bilder enthalten:
Datei: lib/plugins/wvdssnippet/snippets/logo_block.html
<div class="logo">
{{wvds:image>wiki:logo.png|width=100%|maxwidth=200}}
</div>
Sicherheit
Vorteile gegenüber htmlok
| Aspekt | htmlok | wvdssnippet |
| HTML-Eingabe | Frei in jeder Seite | Nur über Admin |
| Sicherheitsrisiko | Hoch (XSS, Injection) | Niedrig (kontrolliert) |
| Audit | Schwierig (verstreut) | Einfach (zentral) |
| Benutzer-Rechte | Jeder mit Bearbeitung | Nur Administratoren |
Best Practices
JavaScript minimal halten - Nur wenn unbedingt nötig
Externe Links mit target=„_blank“ - Sicherheit mit rel=„noopener“
Keine sensiblen Daten - Keine
API-Keys, Passwörter in Snippets
Eindeutige Namen - Snippet-Namen aussagekräftig wählen
Fehlerbehandlung
Verhalten bei Fehlern
| Szenario | Verhalten |
| Snippet nicht gefunden | Gibt [snippet_name not found] aus |
| Leeres Snippet | Gibt nichts aus |
| Ungültiges Format | Ignoriert ungültige Zeilen |
| wvdsi18n-Fehler | Gibt Key zurück (Fallback) |
Debugging
Bei Problemen prüfen:
Ist der Snippet-Name korrekt geschrieben?
Existiert die Datei lib/plugins/wvdssnippet/snippets/{key}.html?
Hat die Datei die Erweiterung .html?
Ist gesetzt für dynamische Inhalte?
Funktionieren die wvdsi18n-Tags einzeln?
Empfehlungen
| Szenario | Empfehlung |
| Statische Snippets | Cache aktiviert lassen |
| Dynamische Snippets (Sprache) | verwenden |
| Große Snippets | In kleinere aufteilen |
| Viele Snippets | Nicht mehr als 50 definieren |
Caching
Seiten mit sprachabhängigen Snippets sollten am Anfang haben, damit die richtige Sprachversion angezeigt wird.
Versionshinweise
| Version | Datum | Änderungen |
| 2.1.0 | 2026-01-26 | Admin-Interface, Datei-basierte Speicherung (HTML-Dateien) |
| 2.0.0 | 2026-01-06 | Umbenennung von wvdschunk zu wvdssnippet |
| 1.0.0 | 2025-01-06 | Erstveröffentlichung |
Siehe auch
Technische Referenz
Klasse: syntax_plugin_wvdssnippet
Datei: lib/plugins/wvdssnippet/syntax.php
| Methode | Beschreibung |
getType() | Gibt substitution zurück |
getSort() | Gibt 310 zurück (nach wvdsi18n) |
connectTo($mode) | Registriert Pattern \\{\\{wvds:snippet>[^}]+\\}\\} |
handle($match, …) | Extrahiert Snippet-Namen |
render($mode, …) | Gibt HTML-Inhalt aus |
Klasse: helper_plugin_wvdssnippet
Datei: lib/plugins/wvdssnippet/helper.php
| Methode | Parameter | Rückgabe | Beschreibung |
getSnippets() | - | array | Lädt alle Snippets aus dem snippets-Verzeichnis |
get() | $name | string | Gibt Snippet-Inhalt zurück |
Klasse: admin_plugin_wvdssnippet
Datei: lib/plugins/wvdssnippet/admin.php
| Methode | Beschreibung |
html() | Rendert Admin-Interface |
handle() | |