Ich habe den Fehler gefunden. Wie vermutet, der clientseitige Sanitizer verwendet die Config nicht. Betreffende Datei ist „vendor/shopware/administration/Resources/app/administration/src/core/helper/sanitizer.helper.js“
Die Methode „setConfig“ wird gar nie aufgerufen. Damit wird in der Methode „sanitize“ der Standard von der eingesetzten Bibliothek DOMPurify verwendet. Und in diesem Standard fliegen script-Tags raus.
Schneller Workaround wäre die Config manuell zu setzen (ca. Zeile 90) und „bin/build-administration.js“ auszuführen:
static sanitize(dirtyHtml, config = {}) {
var config = { ALLOWED_TAGS: ['p', 'a', 'script'], KEEP_CONTENT: true };
return domPurify.sanitize(dirtyHtml, config);
}
ALLOWED_TAGS dann entsprechend erweitern. Das funktioniert dann, JS wird beibehalten und im Frontend auch ausgeführt.
- Besserer Lösungsweg: Plugin anlegen und den Teil anpassen/überschreiben
- Noch besserer Lösungsweg: Plugin anlegen und die YAML-Config laden und verwenden
- Königsweg: Fix durch Shopware - wenn ich dazu komme lege ich mal ein Issue an
@R4M Über den Weg wäre es aber zumindest temporär und schnell lösbar für dich und deinen Kunden.