Style-Tag und offene Tags im E-Mail Template (Header/Footer) ermöglichen?

Ich kämpfe aktuell mit Problemen bzgl. der automatischen HTML-Bereinigung seitens Shopware beim Speichern der HTML-E-Mail-Templates:

1.) Ich versuche in dem E-Mail-Template für den Header/Footer ein Style-Tag einzufügen (mit …, damit ich grundlegende Styles nicht inline in jedes einzelne HTML-Tag einfügen muss. Leider entfernt Shopware beim Speichern das komplette Tag.
In dem Post CSS in E-Mail templates habe ich gelesen, dass der Beitrag-Ersteller ein Style-Tag eingefügt hat und es auch gespeicher wurde. Ich nehme daher an, dass es 2021 mal ging - bis dann mit einem Shopware-Update die HTML-Bereinigung kam…

2.) Außerdem möchte ich den E-Mail-Content (der ja aus den anderen E-Mail-Templates kommt) in ein Div wrappen, um ihn ebenfalls sinnvoll zu stylen und das Div nicht in jedes einzelne E-Mail-Template einfügen zu müssen. Dazu wollte ich im Header-Bereich ein öffnendes DIV-Tag am Ende einfügen und im Footer-Bereich des Header/Footer-Templates ein schließendes DIV-Tag. Leider greift auch hier die Logik von Shopware ein und schließt beim Speichern das öffnende DIV-Tag im Header-Bereich direkt wieder und entfernt das schließende DIV-Tag im Footer. Wenn man die Felder inhaltlich unabhängig voneinander wären, wäre das ja auch korrekt um sauberes HTML zu erzeugen. Aber die Felder sind ja nicht unabhängig, sondern werden am Ende mit dem Content der anderen E-Mail-Templates zusammengefügt. Daher ist dieses Verhalten m.E. hier falsch.

Wie kann ich meine beiden Probleme lösen?
Gibt es evtl. eine Möglichkeit / Einstellung, um das Bereinigen / Prüfen der HTML-Inhalte in den HTML-Editoren gänzlich abzustellen?
(Denn auch bei der Inhaltspflege im CMS finde ich die Prüfung / Bereinigung seitens Shopware mehr als störend, wenn man z.B. Tags / Styles entfernen will, die durch das Kopieren von Inhalten in den Editor übernommen wurden - dann löscht Shopware ja auch gern mal den gesamten Inhalt…)

Vielen Dank für den Hinweis. Der Link bzw. der Hinweis auf den HTML Sanitizer hat zu einer „Lösung“ gebracht.


Hier meine erste Idee, die ich aber wieder verworfen habe (ich dokumentiere sie hier nur um anderen hilflosen Seelen die Enttäuschung zu ersparen :stuck_out_tongue: ):

Da man laut der verlinkten Seite oben den HTML Sanatizer augenscheinlich nach seinen Bedürfnissen konfigurieren kann, dachte ich mir, dass ich ihn nicht komplett deaktiviere (aufgrund der Sicherheit) sondern einfach zusätzlich das Style-Tag erlaube und auch öffnende Tags ohne entsprechende schließende Tags etc. Da ich auf den Seiten von Shopware leider keine ausführliche Beschreibung zu den kompletten Konfigurations-Möglichkeiten gefunden habe, habe ich im Shopware-Code nachgeforsch. In der Datei vendor\shopware\core\Framework\Resources\config\packages\shopware.yaml findet man schonmal die Einstellung von Shopware für den HTML Sanatizer. Außerdem scheint der HTML Sanatizer den HTML Purifier zu verwenden. Auf der Website Configuration Documentation - HTML Purifier gibt es eine schöne Dokumentation aller Konfgiurations-Möglichkeiten. Als ich das Style-Attribut über die Konfiguration erlauben wollte, erhielt ich im Shopware-Frontend allerdings den Fehler:

User Warning: Element 'style' is not supported (for information on implementing this, see the support forums)

Laut htmlpurifier - Can I configure HTML Purifier to allow <style> tags? - Stack Overflow muss man scheinbar erst CSSTidy installieren damit man das Style-Tag erlauben kann. Da das ganze hier extreme Ausmaße annimmt, habe ich die Idee bzgl. der Anpassung der HTML Sanatizer-Konfig verworfen.


Folgende „Lösung“ (oder Workaround) habe ich nun für mich gefunden:

Wie im HTML Sanitizer-Tutorial beschrieben habe ich den HTML Sanatizer über eine eigene YAML-Datei komplett deaktiviert:

shopware:
    html_sanitizer:
        enabled: false

Danach habe ich meine gewünschten Anpassungen im E-Mail-Template für den E-Mail Header und Footer vorgenommen und gespeichert. Siehe da: Die Anpassungen wurde 1:1 übernommen :slight_smile:
Anschließend habe ich den HTML Sanatizer wieder aktiviert, indem ich meine Konfiguration in meiner YAML-Datei auskommentiert habe:

#shopware:
#    html_sanitizer:
#        enabled: false

Wenn nun nichts mehr in den E-Mail-Template für den E-Mail Header und Footer geändert wird, bleiben meine Anpassungen weiterhin enthalten. Der HTML Sanatizer bereinigt meine Anpassung nur, wenn man in den Feldern eine Änderung vornimmt.
So habe ich es geschafft meine Änderungen einzubauen und der HTML Sanatizer kann trotzdem weiterhin für mehr Sicherheit sorgen!

Nun bleibt nur zu hoffen, dass in dem angepassten Template nichts mehr geändert wird und nicht nachträglich irgendwann mal eine Bereinigung seitens Shopware eingefügt wird (z.B. beim Versand der E-Mail)…