Hilft Dir bei Deiner Arbeit. Zeigt Dir das was nicht im Handbuch steht. Loest unloesbare Probleme. Das Schweizer Taschenmesser und die milchgebende Eier-Sau im Wollpelz in Sachen TYPO3.
Showing posts with label powermail. Show all posts
Showing posts with label powermail. Show all posts
Monday, February 10, 2014
Wie kann man bei Powermail 2.0 das TabMenu (die Seiten-Links/-Buttons) bearbeiten?
Das TabMenu wird via JavaScript in der Datei typo3conf/ext/powermail/Resources/Public/Js/tabs.js erzeugt.
Diese sollte natuerlich nicht direkt veraendert werden, da sie Bestandteil der Powermail-Extension ist (und beim naechsten Update ggf. ueberschrieben wird).
Man kann eine Kopie der Datei aber z.b. am Ende der Seite einbinden - diese ueberschreibt dann (im Webbrowser) die durch Powermail selbst inkludierte Orginal-Datei, wodurch individuelle Anpassungen moeglich werden.
Kopiert man also typo3conf/ext/powermail/Resources/Public/Js/tabs.js z.b. nach fileadmin/js/powermail_custom_tabs.js (und nimmt hier Anpassungen vor), dann koennte man in TypoScript-Setup schreiben:
page.includeJSFooterlibs.powermailCustomTabs = fileadmin/js/powermail_custom_tabs.js
Monday, January 27, 2014
Wie kann ich bei powermail 2.0 andere Templates/Layout/Partials verwenden? / Wie kann ich bei powermail 2.0 unterschiedliche Formulare unterschiedlich behandeln?
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
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
Subscribe to:
Posts (Atom)