Hallo, ich bin gerade dabei, eMail Vorlagen anzulegen und möchte ungern in allen Vorlagen den Header und Footer einbauen. Gibt es eine Möglichkeit diese Teile der Vorlage auszulagern, zum Beispiel in Variablen? viele Grüße aus Hamburg Felix
Also mit Textsnippets scheint es wohl nicht zu gehen. Weder {s name=AccountPasswordNotEqual namespace=frontend}{/s}
noch {se name=AccountPasswordNotEqual namespace=frontend}{/s}
hat funktioniert. Hier ist es wahrscheinlich am geschicktesten ein Plugin zu schreiben indem man sich z.B. im Fall von der Bestellabschluss-email an die Methode $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Checkout::finishAction::before', 'extendMails' );
hooked und dort dann mittels sql und Shopware()->Db()->fetchOne sich die mail holt, dann am Anfang und am Ende den Header und Footer anfügt. und dann bei 'Shopware\_Controllers\_Frontend\_Checkout::finishAction::after', 'removeHeaderAndFooter' );
den Header und Footer trennt. Man müsste sich dann überall dort einklinken wo die tatsächliche Mail versendet wird. Alternativ direkt in der install-Funktion der Bootstrap alle mails per sql erweitern und dann bei Änderungen im Header oder Footer das Plugin deinstallieren und erneut installieren. Nochmal Alternativ kann man sich ein Plugin schreiben welche eine sinnvolle attributes-Tabelle um zwei Felder erweitert (z.B. s_user_attributes [nicht sehr sinnvoll aber für mich gerade ein einfaches Beispiel] um die Spalten Header und Footer erweitern und dann mittels {$attributes.user.header} und {$attributes.user.footer} in die Mail-Vorlagen einbauen. Shopware()-\>Models()-\>addAttribute( 's\_user\_attributes', 'mail', 'header', 'TEXT', true ); Shopware()-\>Models()-\>addAttribute( 's\_user\_attributes', 'mail', 'footer', 'TEXT', true ); Shopware()-\>Models()-\>generateAttributeModels(array( 's\_user\_attributes' ));
Vielleicht gibt es ja auch ne einfachere Lösung, aber mir fallen jetzt auf Anhieb diese drei ein.