Zunaechst gibt es die Moeglichkeit per TypoScript den TemplatesRootPath etc. in TS-Setup zu veraendern:
plugin.tx_powermail {
view {
templateRootPath = {$plugin.tx_powermail.view.templateRootPath}
partialRootPath = {$plugin.tx_powermail.view.partialRootPath}
layoutRootPath = {$plugin.tx_powermail.view.layoutRootPath}
}
}
Entsprechende TypoScript-Abfragen nach PIDInRootline, stdWrap.if, etc. nehmen die Unterscheidung vor.
Anschliessend koennen unter den neuen Pfaden die fluid-Templates separat bearbeitet werden.
Dies ist aber wenig elegant, da der komplette Satz an fluid-Templates kopiert, und in ggf. in wechselnden Verzeichnissen und Dateien bearbeitet werden muss.
Ein anderer, zunaechst umstaendlicherer, spaeter aber weit flexiblerer Weg, besteht darin ein TypoScript-Objekt zu erzeugen, und dieses dann direkt in den fluid-Templates abzufragen:
lib.powermail {
# write back form-id from powermail hidden field to typoscript...
formid = TEXT
formid.data = GP:tx_powermail_pi1|form
# some if's we need below:
if_is_form_kontakt1 {
value < lib.powermail.formid
equals = {$uid.forms.kontaktform1}
}
if_is_form_kontakt2 {
value < lib.powermail.formid
equals = {$uid.forms.kontaktform2}
}
# ...then build some identifier from form-id and current language, for fluid-template selection:
# (something like: main_kontakt2_de)
fluidsectionidentifier = COA
fluidsectionidentifier {
# some prefix:
100 = TEXT
100.value = main
# if... then... else... - a string for each type of form (compare if's above)
200 = COA
200 {
1 = COA
1 {
if < lib.powermail.if_is_form_kontakt1
10 = TEXT
10.value = _kontakt1
}
2 = COA
2 {
if < lib.powermail.if_is_form_kontakt1
if.negate = 1
1 = COA
1 {
if < lib.powermail.if_is_form_kontakt2
10 = TEXT
10.value = _kontakt2
}
2 = COA
2 {
if < lib.powermail.if_is_form_kontakt2
if.negate = 1
10 = TEXT
10.value = _default
}
10.value = _default
}
}
}
# ... add language suffix:
500 = TEXT
500.value = _
600 = TEXT
600.value < config.language
}
}
Diese maechtige Konstruktion unterscheidet anhand der verschickten Formular-ID zwischen den Formularen "kontakt1" und "kontakt2" bzw. jedem anderen powermail-Formular ("default") auf der Website, und haengt das Kuerzel der eingestellten Frontend-Sprache an.
Das erzeugte Objekt kann nun im fluid-Template fuer Mails verwendet werden, um unterschiedliche fluid-Sections zu rendern:
in "Layouts/Mail.html":
<f:render section="{f:cObject(typoscriptObjectPath:'lib.powermail.fluidsectionidentifier')}" />
in "Templates/Mails/SenderMail.html" (z.b.):
<f:section name="main_default_de">
...
</f:section>
<f:section name="main_kontakt1_de">
...
</f:section>
<f:section name="main_kontakt2_de">
...
</f:section>
Frage:
Wie kann die Formular-ID in anderen fluid-Templates *VOR* dem Abschicken des Formulars ausgelesen und verwendet werden? Vgl. oben: Verwendung des GET-Parameters wohl nur *NACH* dem Verschicken moeglich.
Antwort:
In Templates/Forms/Form.html stehen die Formulardaten ({form.uid}, {form.css}, etc.) zur Verfuegung. Auch in anderen fluid-Templates (Partials?)
Frage:
Wie koennen die Formulardaten ({form.uid}, {form.css}, etc.) z.b. in
Templates/Mails/SenderMail.html verwendet werden? Vgl. oben, das waere eleganter als der GET-Parameter, man koennte z.b {form.css} verwenden