Anforderung:
In einem Powermail Formular befindet sich ein Dropdown mit Herr/Frau als Auswahl.
Auf der Antwortseite (kann natürlich auch eine E-Mail sein) soll dann je nach Auswahl ein "Sehr geehrte Frau ###UID2###" bzw. "Sehr geehrter Herr ###UID2###" stehen.
Idee:
Eine userfunc zu nutzen wäre vermutlich mit Kanonen auf Spatzen geschossen - also warum nicht typoscript nutzen: Eine CASE Anweisung soll je nach Session Eintrag ein typoscript Objekt dynamisch mit dem jeweils benötigten Text befüllen.
Umsetzung:
Zu erst ein Powermail Formular anlegen mit einer Selectorbox (Dropdown) mit Auswahl Herr/Frau und die UID dieses Feldes merken (z.B. ###UID34###). Das Nachnamefeld kann man sich auch gleich merken (z.B. ###UID2###). Desweiteren benötigen wir die tt_content uid des Powermail Formulares (Mit Mauszeiger über das Seiteninhaltssymbol fahren - z.B. 5345)
Auf der Antwortseite einen dynamischen TS Marker anlegen (z.B. test):
###POWERMAIL_TYPOSCRIPT_TEST### ###UID2###
Dieser könnte später wie folgt befüllt werden:
###POWERMAIL_TYPOSCRIPT_TEST### => Sehr geehrte Frau
###UID2### => Müller
Jetzt ein Extension Template anlegen, dass so aussehen könnte:
object = CASE
object.key.data = TSFE:fe_user|sesData|powermail_5345|uid34
object.default = TEXT
object.default.value = Sehr geehrte Frau
object.Herr = TEXT
object.Herr.value = Sehr geehrter Herr
plugin.tx_powermail_pi1.dynamicTyposcript {
test < object
}
TS Erklärung:
Das TS Objekt mit dem Namen object (wie einfallsreich) ist eine CASE Anweisung.
Der Inhalt aus der Session des Feldes mit der uid34 wird geholt (Herr oder Frau).
Standardmäßig wird object mit "Sehr geehrte Frau" befüllt. Falls jedoch das Feld uid34 den Inhalt "Herr" hat, wird object mit "Sehr geehrter Herr" befüllt
Letztendlich wird object an den Marker in Powermail übergeben.
Das wars...
Improvements:
Das ganze muss nicht auf der Antwortseite stattfinden, dass kann auch in einer oder beiden E-Mails benutzt werden.
Dementsprechend können auch andere Datenbanktabellen dynamisch mit TS befüllt werden (vielleicht das nächste HOWTO)
Powermail 2.x
Wie man auf der Antwortseite einen Text an Hand der Eingabe in Version 2.x in powermail unterscheiden kann, findet sich übrigens hier:
#111899
Grüße, Alex 😃
habe das +ext template erstellt und eingebunden, wie beschrieben:
# dynamische Anrede Powermail
object = CASE
object.key.data = TSFE:fe_user|sesData|powermail_1660|uid23
object.default = TEXT
object.default.value = Sehr geehrte Frau
object.Herr = Text
object.Herr.value = Sehr geehrter Herr
plugin.tx_powermail_pi1.dynamicTyposcript {
anrede < object
}
und einen dynamischen marker (anrede) im absender-mail erstellt:
###POWERMAIL_TYPOSCRIPT_ANREDE### ###UID13###
leider wird aber nur der statische inhalt (uid13) eingebunden.
allerdngs habe ich statt einer checkbox radiobuttons gewählt (uid23):
Frau | Frau | *
Herr | Herr
sollte aber doch keinen unterschied machen?
Ich habe auch keine Checkbox sondern eine Selectorbox genommen...
Was passiert, wenn du den Inhalt direkt ausgibst?
page.1 = TEXT
page.1.data = TSFE:fe_user|sesData|powermail_1660|uid23
PS:
Frau | Frau | *
Herr | Herr
ist die Standardeinstellung - das kannst du auch so schreiben:
Frau
Herr
page.1 = TEXT
page.1.data = TSFE:fe_user|sesData|powermail_1660|uid23
(und fortsetzung..?)
interessanterweise hat mit meiner TS-version der default-wert geklappt (Sehr geehrte Frau uid13).
die direkte eingabe bringt dann nicht einmal mehr diese variante.
PS:
Frau | Frau | *
Herr | Herr
ist die Standardeinstellung - das kannst du auch so schreiben:
Frau
Herr
geht bei den radiobuttons nicht.
wenn ich nicht die volle dreifach-zeile eingebe, wird FRAU nicht als default-wert angezeigt.
das generierte HTML sieht jetzt folgendermassen aus:
<div id="powermaildiv_uid23" class="tx_powermail_pi1_fieldwrap_html tx_powermail_pi1_fieldwrap_html_radio tx_powermail_pi1_fieldwrap_html_23">
<p class="tx_powermail_pi1_fieldwrap_html_radio_title">Anrede</p>
<div class="powermail_radio_inner powermail_radio_inner_uid23_0">
<label for="uid23_0">Frau</label>
<input type="radio" name="tx_powermail_pi1[uid23]" value="Frau" class=" powermail_kontakt_fragen_n_ak powermail_radio powermail_uid23 powermail_subuid23_0" id="uid23_0" checked="checked" tabindex="7" />
</div>
<div class="powermail_radio_inner powermail_radio_inner_uid23_1">
<label for="uid23_1">Herr</label>
<input type="radio" name="tx_powermail_pi1[uid23]" value="Herr" class=" powermail_kontakt_fragen_n_ak powermail_radio powermail_uid23 powermail_subuid23_1" id="uid23_1" tabindex="8" />
</div>
</div>
1) Hmmm, bei Interesse kann ich mal in dein Backend schauen...
2) Du hast Recht - mein Fehler
Habe mir das auf deinem Server angesehen - es funktioniert eigentlich alles einwandfrei, wenn du jetzt noch diese Zeile änderst:
object.Herr = Text
object.Herr.value = Sehr geehrter Herr
in
object.Herr = TEXT
object.Herr.value = Sehr geehrter Herr
oh, wie überaus peinlich :o
besten dank
NACHTRAG:
scheint aber doch nicht ganz i.O. zu sein. im FE kam nun direkt nach dem <body>
Sehr geehrte Frau
in abhängigkeit des TS
page.1 = COA_INT
page.1.1 < object
habe jetzt die entsprechenden zeilen deaktiviert.
und alles ist wunderbar.
😃
Habe das gleiche Problem:
Ich habe folgendes TS in das +ext der Antwortseite eingebunden:
object = CASE
object.key.data = TSFE:fe_user|sesData|powermail_2116|uid47
object.default = TEXT
object.default.value = Sehr geehrte Frau
object.Herr = TEXT
object.Herr.value = Sehr geehrter Herr
plugin.tx_powermail_pi1.dynamicTyposcript {
anrede < object
}
In die Antwortseite folgenden Marker gestellt:
###POWERMAIL_TYPOSCRIPT_ANREDE###
Aber der Marker wird nur statisch gelesen.
grac schrieb
page.1 = COA_INT
page.1.1 < object
habe jetzt die entsprechenden zeilen deaktiviert.
und alles ist wunderbar.
😃
Wo muss ich den obigen page-Code noch einfügen und welche Zeilen müssen deaktiviert werden?
Gruß
Seneca
Ich kann auch dir anbieten, dass ich mir die Seite mal anschaue - bei Interesse PM
PS: Da das generell funktioniert, schließe ich den Thread, damit dieser nicht zu unübersichtlich wird