AddOn
Snippets :: xOutputfilter-Nachfolger
Beschreibung
Das Snippets-AddOn bietet zentrale Verwaltung von wiederverwendbaren Code-Fragmenten, Übersetzungen und automatische HTML-Manipulation mit PHP 8.4 DOM:Das Snippets-AddOn bietet zentrale Verwaltung von wiederverwendbaren Code-Fragmenten und automatische HTML-Manipulation mit PHP 8.4 DOM:
- Snippets – Wiederverwendbare HTML/PHP-Fragmente mit Parametern
- Filter – 26+ Filter für Textformatierung
- HTML-Ersetzungen – CSS-Selektoren, Regex und PHP-Callbacks
- Übersetzungen – mit Deepl-Support
- PHP-API –
Snippets::get(),Snippets::apply()für PHP-Zugriff - Scope-Kontrolle – Templates, Kategorien, URLs, Backend-Seiten
- Berechtigungssystem – Admin, Editor, Viewer Rollen
github.com/FriendsOfREDAXO
Umsetzung
Versionen
1.4.3
Fixed: Confirm wurde im Backend doppelt ausgelöst
1.4.2
Fixed: PHP Snippets wurden im Frontend nicht ausgeführt
1.4.1
Fehlerbehebungen (1.4.1)
Zwei Probleme mit dem HTML-Ersetzungen-Modul behoben:
- Ersetzungen im Edit-Modus: HTML-Ersetzungen funktionierten bisher nicht, wenn die Backend-Seite ein Formular enthielt (
page=content/edit, YForm Table Manager). Diese künstliche Sperre wurde entfernt! Jetzt können Entwickler problemlos Backend-Regeln formulieren, die per Regex oder CSS-Selector z.B. das Layout der Edit-Seite verändern. - Defekte Backend-Pages-Auswahlbox: Die Dropdown-Auswahlbox (Scope: Backend-Pages) im Formular zur Erstellung neuer HTML-Ersetzungen hatte einen Darstellungsfehler wegen eines CSS-Konflikts mit
selectpickerund war nicht mehr nutzbar. Das CSS wurde korrigiert.
1.4.0
Was ist neu in 1.4.0?
Hinzugefügt
-
String-Übersetzungen (Sprog-Alternative): Neues Übersetzungssystem für mehrsprachige Strings, direkt im Snippets-AddOn integriert
- Eigene DB-Tabellen (
rex_snippets_string,rex_snippets_string_value) für Key-Value-Übersetzungen pro Sprache - Inline-Bearbeitung: Click-to-Edit direkt in der Tabelle, Escape zum Abbrechen, Enter zum Speichern
- Alle im Frontend verfügbaren Sprachen sind direkt sichtbar und editierbar
- Platzhalter-Syntax
[[ key ]]– wird automatisch per OUTPUT_FILTER ersetzt - Optionale Sprog-Kompatibilität:
{{ key }}-Syntax zusätzlich aktivierbar in den Einstellungen - Sprog-Import: Bestehende Sprog-Wildcards können per Klick importiert werden
- Eigene DB-Tabellen (
-
DeepL-Integration: KI-Übersetzung per DeepL direkt im Backend
- Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
Hinzugefügt
- Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
-
String-Übersetzungen (Sprog-Alternative): Neues Übersetzungssystem für mehrsprachige Strings, direkt im Snippets-AddOn integriert De
-
**String-Üb de - Eigene DB-Tabellen (
rex_snippets_string,rex_snippets_string_value) für Key-Value-Übersetzungen pro Sprache- Inline-Bearll - Inline-Bearbeitung: Click-to-Edit direkt in der Tabelle, Escape zum Abbrechen, Enter zum Speichern
- Alle im Frontes - Alle im Frontend verfügbaren Sprachen sind direkt sichtbar und editierbar
- Platzhalter-Syntax'k - Platzhalter-Syntax
[[ key ]]– wird automatisch per OUTPUT_FILTER ee( - Optionale Sprog-Kompatibilität:{{ key }}-Syntax zusätzlich aktivierbar ch - Sprog-Import: Bestehende Sprog-Wildcards können per Klick importiert werden
-
DeepL-Integr E- DeepL-Integration:** KI-Übersetzung per DeepL direkt im Backend
- Einzelübee - Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
ta### Hinzugefügt
- Einzelübee - Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
-
**String-Übersetzungen (Sprog-Alternativs()` – Übersetzungen mit Sprach-Codes installieren
SnippetsInstaller::installSnippets()– Snippets installieren- `SnippetsInstaller::installHtml - Inline-Bearll - Inline-Bearbeitung: Click-to-Edit direkt in der Tabelle, Escape zum Abbrechen, Enter zum Speichern
- Alle im Front K - Alle im Frontes - Alle im Frontend verfügbaren Sprachen sind direkt sichtbar und editierbar
- Platzhalter-Synt
- Platzhalter-Syntax'k - Platzhalter-Syntax[[ key ]]– wird automatiscementsByPrefix()- DeepL-Integr E- DeepL-Integration:** KI-Übersetzung per DeepL direkt im Backend - Einzelübee - Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
ta### Hinzugefügt
-
String-Übersetzungen (Sprog-Alternativs()` – Übersetzungen mit Sprach-Cne - Einzelübee - Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
taZw### ta### Hinzugefügt** -
**String-Übersetpets, HTML-Ersetzungen, Abkürzungen
-
**String-ngen) zeigen -
SnippetsInstaller::installSnippets()– Snippets installierenSnippetsInstaller::ne -SnippetsInstaller::installHtml - Inline-Bearll - Inline-Bearbe - Alle im Front K - Alle im Frontes - Alle im Frontend verfügbaren Sprachen sind direkt sichtbar und editierbar- Platzhalter-Synt
- Platzhalterwi - Platzhalter-Synt- Platzhalter-Syntax'k - Platzhalter-Syntax[[ key ]]– wird automatiscementsByPrefiFo - Einzelübee - Einzelübersetzung: DeepL-Button pro Sprachzelle, überset
ta### Hinzugefügt
-
**String-Übersetzungen (Sprog-Alternativs()` – Übersetzungen mit Sprach-Cne - Einzelübee - d ### ta### Hinzugefügt
-
**String-Übersetzungen (Sprog-Alternativs()` – se
-
**String-Übersetzung### taZw### ta### Hinzugefügt
-
**String-Übersetpets, HTML-Ersetzungen, Abkürzungen
-
**String-ngen) zeigen - `SnippetsInstaller::installSnippeen können d
-
String-Übersetpets, XLIFF - String-ngen) zeigen -
SnippetsInstaller::instalrd-Format für professionelle Übersetzer-Tools (SDL Trados, memoQ, Memsource, Phrase) exportier - Platzhalter-Synt- Platzhalterwi - Platzhalter-Synt- Platzhalter-Syntax'k - Platzhalter-Syntax[[ key ]]` – wird automatiscementsByPrefiFo - Einzelübee - Einzelübersetzung: DeepL-Button pro ng### ta### Hinzugefügt -
**String-Übersetzungen (Sprog-Alternativs()` – Übersetzungen mit Sprach-Cne - Einzelübee - d ### ta### Hinzugefügt
-
**String-Übersetzungen (Sprog-Alternativs()` – se
-
**String-Übersetzung##onfigurierbare Extension P
-
**String-Übersetzungen (Sprog-Alternativs()` – se
-
**String-Übersetzung### taZw### ta### Hinzugefügt
-
String-Üel - String-Übersetzung### taZw### ta### Hinzugefügt
_B -
String-Übersetpets, HTML-Ersetzungen, AbkürzuRec- String-ngen) zeigen -
SnippetsInstaller::instal a- **String-Übersetpets, XLIFF - **String-ngen) zeigen -SnippetsInstlu -
**String-Übersetzungen (Sprog-Alternativs()` – Übersetzungen mit Sprach-Cne - Einzelübee - d ### ta### Hinzugefügt
-
**String-Übersetzungen (Sprog-Alternativs()` – se
-
**String-Übersetzung##onfigurierbare Extension P
-
**String-Übersetzungen (Sprog-Alternativs()` – se
-
**String-Übersetzung### taZw### ta### Hinzugefügt
-
String-Üel - String-Übersetzung### taZw### ta### Hinzugefügt im Menü nun rechtsbündig ausgerichtet (
pull-right) -
Kategorie-Auswahl: Selectpicker durch natives
<select>mit slid- **String-Übersetzung##onfigurierbare Extension P -
ap- *String-Übersetzungen (Sprog-Alternate Tabelle:- **String-Übersetzung### taZwes Scrollen bei vielen Sp
-
String-Üel - String-Übersetzung### taZw### ern_B
-
String-Übersetpets, HTML-Ersetzungen, AbkürzuRec- String-ion
1.2.0
Snippets 1.2.0 bringt mehrere Verbesserungen für HTML-Ersetzungen im Backend. Import/Export wurde stabilisiert (inkl. Fix für den Import-Upload), und scope_backend_request_pattern wird jetzt vollständig mit exportiert und importiert.
Außerdem wurde das Scope-Matching präzisiert: Backend-Seiten und Backend-Request-Pattern lassen sich kombinieren, und die Pattern sind flexibler nutzbar (Teilstring-Matching für Parameterwerte, z. B. page=content/edit trifft auch Requests mit zusätzlichen Parametern). Für Edit-Kontexte wurden HTML-Ersetzungen sicherer gemacht, damit formularnahe Bereiche geschützt bleiben.
Zusätzlich wurde die Backend-UI verbessert: Kategorie-Icons werden jetzt konsistent in Liste und Auswahlfeldern angezeigt, die Backend-Seiten-Auswahl ist in der Höhe begrenzt, und die Hilfetexte in den HTML-Ersetzungs-Einstellungen enthalten konkrete Pattern-Beispiele und klare Hinweise zur Kombinationslogik.
1.0.2
1.0.2] – 2026-02-27
Danke Andreas 👍🏼 @aeberhard
Behoben
- HTML-Ersetzung (Backend-Scope): Regeln mit Auswahl wie
mediapoolgriffen nicht auf Unterseiten wiemediapool/media; Backend-Seiten-Matching prüft nun exakt und per Präfix - HTML-Ersetzung (Backend-Kontext): Seitenbestimmung war in einigen Fällen unzuverlässig; Ermittlung erfolgt jetzt primär über
rex_be_controller::getCurrentPage() - HTML-Ersetzung (Aktiv-Status): Aktiv-Checkbox konnte nach dem Bearbeiten als inaktiv gespeichert werden; Status wird nun explizit als
0/1geführt und robust aus Legacy-Werten (z. B.|1|) normalisiert - HTML-Ersetzung (Backend-Seiten-Label): doppelt escapte Titel (
&) in der Seitenauswahl wurden korrigiert
Hinzugefügt
- Dynamische Backend-Seitenauswahl: statt statischer Liste werden alle verfügbaren Backend-/Addon-Seiten hierarchisch aus der Navigation angeboten
- Selectpicker für Backend-Seiten: Mehrfachauswahl mit Suche und Auswahl-Aktionen in der HTML-Ersetzungsmaske
- Backend-Request-Pattern: optionale freie Eingabe für Request-Filter (z. B.
page=content/edit&function=addoder Teilstring-Match auf URL) - Datenmigration in
update.php: Normalisierung bestehenderstatus-Werte und Backend-Scope-Daten, inkl. neuem Feldscope_backend_request_pattern
1.0.1
1.0.1] – 2026-02-25
Behoben
- HTML-Ersetzung: Editieren zeigte leere Felder –
idwurde nur aus GET gelesen, jedoch beim Formular-Submit per POST übertragen;rex_request::request()liest nun aus beiden Quellen - HTML-Ersetzung: „Name existiert bereits" beim Speichern einer bestehenden Regel – Folgefehler der fehlenden
id,nameExists()schloss die eigene ID nun korrekt aus - HTML-Ersetzung: Suchwert mit führenden/nachfolgenden Leerzeichen wurde nicht gefunden –
trim()wird jetzt beim Speichern angewendet - Kategorien:
[translate:cancel]und[translate:no_data_available]– falsche Core-Keys ersetzt durch addon-eigene Keys (snippets_btn_cancel,snippets_category_no_data) - Kategorien/Listing:
[translate:edit]– incategories.phpundlisting.phpdurchsnippets_category_edit/snippets_btn_editersetzt - HTML-Ersetzung: Abbrechen-Button verzweigte zurück zur leeren Bearbeiten-Seite statt zur Übersicht
- HTML-Ersetzung:
OUTPUT_FILTERin separate Extension mitrex_extension::LATEausgelagert, damit die HTML-Ersetzung garantiert nach allen anderenNORMAL-Filtern (z. B. Sprog, YRewrite) ausgeführt wird
1.0.0
Snippets AddOn / REDAXO CMS
Eine moderne Alternative zum xoutputfilter (Danke Andreas ❤️) AddOn und als Ergänzung zu Sprog (Danke Thomas ❤️).
Snippets können Texte sein oder kleine Code-Schnipsel die global verwendet werden können. Die Ausgabe erfolgt über den Outputfilter.
bersicht
Das Snippets-AddOn bietet zentrale Verwaltung von wiederverwendbaren Code-Fragmenten und automatische HTML-Manipulation mit PHP 8.4 DOM:
- Snippets – Wiederverwendbare HTML/PHP-Fragmente mit Parametern
- Filter – 26+ Filter für Textformatierung
- HTML-Ersetzungen – CSS-Selektoren, Regex und PHP-Callbacks
- PHP-API –
Snippets::get(),Snippets::apply()für PHP-Zugriff - Scope-Kontrolle – Templates, Kategorien, URLs, Backend-Seiten
- Berechtigungssystem – Admin, Editor, Viewer Rollen
Full Changelog: https://github.com/FriendsOfREDAXO/snippets/commits/1.0.0