Im Twitch-Stream vom 9. Okt. 2025 tauchte die Frage auf, wie man eigene Angaben in form-emails machen kann, ohne sie direkt ins Layout zu schreiben.
Ich hoffe, es hier zu posten, ist okay. Ein möglicher Lösungsansatz nach meinen Notizen, zu dem form-framework-Monster, mit dem man schnell ein schönes Formular hinbekommt - bis man was anpassen will.
Vorauss.: Das yaml-Setup ist per Typoscript ausgelagert, um es anzupassen
ts-setup etwa
module.tx_form.settings.yamlConfigurations {
200 = EXT:mysitepackage/ext/form/CustomFormSetup.yaml
}
E-Mail-Templates in Siteset auslagern
Die Layouts aus dem Core cms-core/Resources/Private/Frontend/Layouts SystemEmails-html | SystemEmails.txt
und Templates - nicht aus dem cms-core, sondern aus cms-form\Resources\Private\Frontend\Templates\Finishers\Email Default.html | Default.txt
z. B. in customext/mysitepackage/ext/form/Resources/Private/Email/
Layouts
Templates
auslagern.
Die Email-Pfade in der eigenen FormSetup.yaml anpassen.
...
finishersDefinition:
EmailToReceiver:
options:
templateRootPaths:
200: 'EXT:mysitepackage/ext/form/Resources/Private/Email/Templates/'
layoutRootPaths:
200: 'EXT:mysitepackage/ext/form/Resources/Private/Email/Layouts/
partialRootPaths:
200: 'EXT:mysitepackage/ext/form/Resources/Private/Email/Templates/'
analog für Email to Sender.
3.
a. Einfache Variante, um es über das eigene Constants/Setup anzugeben:
lib.customFooter = COA
lib.customFooter {
10 = TEXT
10.value = Muster AG . Am Bahnhof 1 . 12345 Musterstadt <br> Tel.: 012345/64789
}
Im Footer des Layouts <f:cObject typoscriptObjectPath="lib.customFooter" /> einfügen.
Wer erklären kann, wie man das schöner über Constants oder settings-definitionen im bei sitesets hinbekommt - gerne!
b. Redaktionell anpassbar, mit festen uid für die CE: Im Setup ein Objekt erstellen, um auf ein CE zugreifen zu könnnen:
lib.renderContent = RECORDS
lib.renderContent {
tables = tt_content
source.field = contentUid
dontCheckPid = 1
}
Im BE eine CE erstellen, das die Angaben aufnimmt, z.B. Unternehmens-, Kontaktangaben (id gut merken). Sollte natürlich irgendwo sein, wo es sonst nicht stört, kann aber auch ausgeblendet sein.
Im Footer des Layouts <f:cObject typoscriptObjectPath="lib.renderContent" data="{contentUid: 93}"/> an die gewünschte Stelle eintragen, wobei 93 hier die ce-uid ist.
Anmerkungen:
a. Links auf eine interne Seite sollten als externe Links eingefügt werden, weil sie als vollständiger Pfad beim Empfänger ankommen sollen. Ist das CE z. B. Text und Medien, lassen sich keine Bilder einfügen, was an der typischen Logik für die Darstellung im FE liegt (Link in der Mail fehlt der vollständige Pfad); gilt auch für Bilder, die über rte_ckeditor_image eingefügt werden. Dafür bleibt wohl nur noch ein html-CE mit vollständiger Pfadangabe für Bilder.
b. Für plaintext sollte man ohnehin auch ein html-CE angeben, weil sonst in der Mail das html-Markup mitausegeben wird. <div id="c93" class="fsc-default ce-textmedia">....
Vielleicht bekommt man es ja über einen viewhelper weg (ich wüsste aber nicht wie).
Wenn Bilder fest verdrahtet sind, geht natürlich ein normales html img-tag oder sie inline im Mailtemplate einzusetzen.
Möchte man CE im Template der Mail ausgeben, muss im CustomSetup.yaml noch die default-konfiguartion angepasst werden.
...
ContentElement:
variants:
-
identifier: hide-1
renderingOptions:
enabled: true
condition: 'stepType == "SummaryPage" || finisherIdentifier in ["EmailToSender", "EmailToReceiver"]'
...
und in dem Template noch
<f:if condition="{formValue.element.type} == 'ContentElement'">
<f:then></f:then>
<f:else>{formvh:translateElementProperty(element: formValue.element, property: 'label') -> f:format.stripTags(allowedTags: '<a>')}</f:else>
</f:if>
einfügen. Die Ganze Mimik gilt ähnlich bei 'StaticText', den mann natürlich auch nehmen könnte.
Hier nicht beschrieben, ist das Vorgehen bei unterschiedlichen Templates für Sender/Empfänger und/oder unterschiedlichen Formularen; folgt aber der Logik. Gute Beschreibung bei Sebastian Klein https://www.sebkln.de/tutorials/fluid-emails-im-typo3-form-framework/.
Wer sowas häufiger nutzt oder viele Formulare hat, kann auch die Ext. form_email_contentblocks nutzen (https://extensions.typo3.org/extension/form_email_contentblocks), bei der man im Formulareditor etliche Möglichkeiten hat, um das ganze Brimborium zu umgehen. In Verbindung mit eigenen Templates, müssen diese aber auch angepasst werden. Die Ext. kann aber z. B. auch Bilder einfügen, wodurch Kampagen-Logos etc. redaktionell einpflegbar sind.