Zum Inhalt springen

Powermail: Dynamischer Text auf Antwortseite

Erstellt am 26. Juni 2008 · 8 Antworten · letzte Antwort am 7. Januar 2009

Tags: Powermail, Frage

einpraegsam.​net ·

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 😃

grac ·

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?

einpraegsam.​net ·

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

grac ·
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>
einpraegsam.​net ·

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
grac ·

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.
😃

Seneca ·

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

einpraegsam.​net ·

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