Zum Inhalt springen

powermail 2.x - Dynamischer Text auf Antwortseite

Erstellt am 28. August 2012 · 18 Antworten · letzte Antwort am 18. Juli 2015

Tags: Fluid, Powermail, Tipp

einpraegsam.​net ·

Anforderung:
In einem Powermail Formular befindet sich ein Dropdown/Radiobutton 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 {nachname}" bzw. "Sehr geehrter Herr {nachname}" stehen.

Idee:
Eine userfunc zu nutzen wäre vermutlich mit Kanonen auf Spatzen geschossen - aber warum nicht ausschließlich mit TypoScript?
Eine CASE Anweisung soll je nach Eintrag ein TypoScript Objekt dynamisch mit dem jeweils benötigten Text befüllen (Alternativ könnte man auch mit if in TypoScript arbeiten).

Umsetzung:
Zu erst ein Powermail Formular anlegen mit einer Selectorbox (Dropdown) oder einem Radiobutton mit Auswahl Herr/Frau und den Marker (automatisch erzeugt oder manuell vergeben) dieses Feldes merken (z.B. {salutation}).
Das Nachnamefeld kann man sich auch gleich merken (z.B. {nachname}).

Auf der Antwortseite kann man mit Hilfe eines cObject ViewHelpers auf TypoScript zugreifen:

{f:cObject(typoscriptObjectPath:'lib.salutation',data:'{salutation}')} {nachname}

Hier Ihre Eingaben:

{powermail_all}


Viele Grüße, in2code.de

Das dazugehörige TypoScript (z.B. in einem Extension Template auf der Seite des Formulares):

lib.salutation = CASE
lib.salutation {
	# Übergebener Wert
	key.field = 0

	# Wert kann alternativ auch direkt von GET- oder POST-Parameter geholt werden
	#key.data = GP:tx_powermail_pi1|field|13
		
	Herr = TEXT
	Herr.value = Sehr geehrter Herr
	Herr.noTrimWrap = || |
	
	Frau = TEXT
	Frau.value = Sehr geehrte Frau
	Frau.noTrimWrap = || |
}

Screenshots der Einstellungen:
Bild: easycaptures.com/…/0738653064.png
Bild: easycaptures.com/…/1058937270.png
Bild: easycaptures.com/…/9549748915.png
Bild: easycaptures.com/…/8053365657.png

Improvements:
Das Ganze muss nicht auf der Antwortseite stattfinden, dass kann auch in einer oder beiden E-Mails benutzt werden.

Powermail 1.x
Wie man auf der Antwortseite einen Text an Hand der Eingabe in Version 1.x in powermail unterscheiden kann, findet sich übrigens hier:
#78897

Cheers, Alex

Kurt51 ·

Hallo Alex,

Danke für die Umsetzung! 😃

Ich habe es noch um die Auswahl "Firma" erweitert und das Feld {name} über die ID eingelesen:

lib.anrede = CASE
lib.anrede {
# Übergebener Wert
key.field = 0

# Wert kann alternativ auch direkt von GET- oder POST-Parameter geholt werden
#key.data = GP:tx_powermail_pi1|field|13
default = TEXT
default.value = Sehr geehrte Damen und Herren,

Herr = TEXT
# Die "4" ist die ID des Powermail-Felds "{name}" z.B.
Herr.data = GP:tx_powermail_pi1|field|4
Herr.noTrimWrap = |Sehr geehrter Herr |,|

Frau = TEXT
Frau.data = GP:tx_powermail_pi1|field|4
Frau.noTrimWrap = |Sehr geehrte Frau |, |
}

perse ·

Hi Alex,

ich versuche gerade in einem Formular, abhängig von gewähltem Selectboxeintrag, die Empfänger-Adresse zu setzen. Ich habe folgende Einstellungen

lib.empfaenger_mail = CASE
lib.empfaenger_mail {
  
  #key.data = GP:tx_powermail_pi1|field|1629
  key.field = 1629
  
  default = TEXT
  default.value = abc@test.de
  
  1 = TEXT
  1.value = def@test.de
  
  2 = TEXT
  2.value = ghi@test.de
  
}

Bild: great-community.de/1.png
Bild: great-community.de/2.png

Dann im Plugin auf der Kontaktseite folgendes als Empfänger eingetragen:
Bild: great-community.de/3.png

Offenbar habe ich irgendwo einen Fehler. Kannst du mir sagen was ich falsch mache?

Vielen Dank und viele Grüße
Marc

franzferdinand ·

Super Sache, der ViewHelper!
Was ich leider nicht hinbekomme ist die Übergabe eines Feldwertes an ein lib Ojekt.
Ich habe im RTE-Feld angegeben:
{f:cObject(typoscriptObjectPath:'lib.weiterempfehlen',data:'{text}')}

im TS hab ich (erstmal vereinfacht, soll später in ein Weiterempfehlen-Formular FORM integriert werden):
lib.weiterempfehlen = COA
lib.weiterempfehlen {
10 = TEXT
10.value.current = 1
10.value.wrap = <p>Test-Text: |</p>
}

Es kommt leider nichts raus. Was mach ich falsch?

einpraegsam.​net ·

Beispielverwendung

# {f:cObject(typoscriptObjectPath:'lib.weiterempfehlen',data:'{text}')}
lib.weiterempfehlen = TEXT
lib.weiterempfehlen.field = 0
# Debut Output
# lib.weiterempfehlen.data = debug:data
sugi ·

Guten Morgen liebe Forummitglieder,

ich habe verschiedene Möglichkeiten probiert und komme nicht weiter. Hoffe, ihr könnt mir helfen.

Problemdarstellung: Nach dem Update von Powermail auf 2.x habe ich das Formular neu erstellt. Das Formular wird an verschiedene Empfänger verschickt. Dieses Formular wird für Veranstaltungsanmeldung verwendet, d.h. es ist mit einer anderen Extension verbunden und diese basiert nicht auf Extbase.
Der Redakteur gibt im BE die Veranstaltungen mit verschiedenen Empfängern ein, die dann im DB gespeichert sind (Tabelle tx_eventbrowser_event Feld contact_email). Der Anmelder wählt keinen Empfänger, was die Umsetzung für mich schwer macht.

Bisher wurde das mit folgender TS-Code realisiert:

plugin.tx_powermail_pi1 {
	prefill {
		uid88 < lib.event_title.100
		uid70 < lib.event_termin.100
		uid97 < lib.contact_email.100
		#uid98 < lib.event_end.100
	}
	dynamicTyposcript {
		receiver_email = RECORDS
		receiver_email {
			source.data = TSFE:fe_user|sesData|powermail_12687|uid91
			source.intval = 1
			tables = tx_eventbrowser_event
			conf.tx_eventbrowser_event = TEXT
			conf.tx_eventbrowser_event.field = contact_email
		}
		senders_data = COA
		senders_data {
			10 < lib.event_title.100
			10.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
			10.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
			
			20 < lib.event_termin.100
			20.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
			20.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
			
			30 < lib.event_end.100
			30.source.data = TSFE:fe_user|sesData|powermail_12687|uid91
			30.wrap = <span style="color:#7199AC; font-weight:bold; margin:0 20px;"> | </span>
		}
		receiver_data < .senders_data
		
	}
	###POWERMAIL_TYPOSCRIPT_RECEIVER_EMAIL###
}

# powermail zwischenspeichern
temp.powermail < plugin.tx_powermail_pi1

plugin.tx_powermail_pi1.email.recipient_mail.sender.name.value = Seminaranmeldung

Den Marker ###POWERMAIL_TYPOSCRIPT_RECEIVER_EMAIL### habe ich entfernt und in "E-Mail Adresse des Empfänger" folgendes eingegeben:

{f:cObject(typoscriptObjectPath:'lib.contact_email')}

was nicht funktioniert. Leider! 😢 Sitze schon seit einer Woche und komme nicht weiter. Vielleicht zeigt sich ja ein Licht in der Dunkelheit...

Viele Grüße und einen schönen Wochenanfang!

einpraegsam.​net ·

So schwer sollte das eigentlich nicht sein.
Du kannst entweder bereits im Formular drei Hiddenfields füllen mit Werten aus der Tabelle (Titel, Termin, E-Mail) oder du schleifst die UID des Datensatz mit durch und machst im Anschluss deine Abfrage.

Erstere Möglichkeit
Drei Hiddenfields erstellen (auch die entsprechenden Marker merken) und über TypoScript mit den Werten aus der Tabelle befüllen. Hier wird das Powermail Formular aufgerufen mit index.php?id=123&eventUid=1234 - Bsp:

plugin.tx_powermail.settings.setup.prefill {
   markerName1 = RECORDS
   markerName1 {
      source.data = GP:eventUid
      source.intVal = 1
      tables = tx_eventbrowser_event
      conf.tx_eventbrowser_event = TEXT
      conf.tx_eventbrowser_event.field = contact_email
   }
   markerName2 ...
}
sugi ·

Vielen Dank! Du hast mir den entsprechenden Hint gegeben. 😃

Hab im "E-Mail Adresse des Empfänger" die Variablenname gesetzt.

stevepa ·

Hallo,

ich habe eure Beiträge gelesen aber genau das richtige ist noch nicht für mich dabei.

Ich habe eine Checkbox "ich möchte Kataloge digital downloaden".
Auf der Antwortseite soll dann bei aktivierter Checkbox ein Text erscheinen mit den Download-Links, bei den anderen fehlt dieser Teil einfach.

Wie würde der Code in diesem Fall aussehen?

Vielen Dank für Eure Hilfe!

LG

einpraegsam.​net ·

Ich denke, dass die einfachste Möglichkeit eine Weiterleitung auf eine andere Seite wäre, je nachdem, ob die Checkbox angehakt ist oder nicht.

Beispiel:
- Auf Seite 123 hast du den normalen Text und
- auf Seite 234 hast du den Text mit den Downloads

plugin.tx_powermail {
	settings {
		setup {
			thx.overwrite.redirect = TEXT
			thx.overwrite.redirect.value = 123
		}
	}
}

# powermail 2.1.x mit Markername {download} für die Checkbox:
[globalVar = GP:tx_powermail_pi1|field|download|0]
plugin.tx_powermail.settings.setup.thx.overwrite.redirect.value = 234
[end]

# powermail 2.0.x mit Uid 555 für Downlaod Checkbox:
[globalVar = GP:tx_powermail_pi1|field|555|0]
plugin.tx_powermail.settings.setup.thx.overwrite.redirect.value = 234
[end]
ShaBaNakk ·

Hallo,

ich würde gerne einem Termin eine ID zuweisen. Mit dem im Beispiel beschriebenen Code komme ich leider nicht ganz an mein Ziel. Vielleicht kann mir jemand einen Schubser in die richtige Richtung geben; Beispiel was ich machen möchte:

Powermail-Dropdown-Feld "Termin":
Bsp-Auswahl1: 18.07.2015 - 13:00 Uhr
Bsp-Auswahl2: 18.07.2015 - 14:00 Uhr

Der Empfängermail die ich bekomme würde ich gerne noch je nach Termin eine Termin-ID am Anfang anfügen.

{f:cObject(typoscriptObjectPath:'lib.termin',data:'{termin}')}
{powermail_all}

Dazu mein Template:

lib.termin = CASE
lib.termin {
  key.field = 0
  
  "18.07.2015 - 13:00 Uhr" = TEXT
  "18.07.2015 - 13:00 Uhr".noTrimWrap = |12345|
  
  "18.07.2015 - 14:00 Uhr" = TEXT
  "18.07.2015 - 14:00 Uhr".noTrimWrap = |54321|

}
    }

Mein Code funktioniert mit den Anführungszeichen so nicht, wie muss ich das Template verändern?

Schonmal vielen Dank!

einpraegsam.​net ·

Du kannst einen TypoScript CASE nicht mit Werten mit Leerzeichen nutzen.
Ich würde die Auswahl im powermail select mit ids machen, aber Termine anzeigen. Beispiel Eintrag im Feld Options (eines Feldes vom Typ Select):

Bitte wählen:|
18.07.2015 - 13:00 Uhr|1
18.07.2015 - 14:00 Uhr|2

Wenn der Besucher sichtbar "18.07.2015 - 13:00 Uhr" auswählt, wird eine 1 übertragen - damit lässt sich auch mit TypoScript und CASE etwas anfangen

ShaBaNakk ·

Danke für die schnelle Rückmeldung. Leider bekomme ich dann über {powermail_all} aber auch eine 1 anstatt des richtigen Termins in der Bestätigung für den Absender. Kann man dort weiterhin "18.07.2015 - 13:00 Uhr" zurückgeben?

einpraegsam.​net ·

ja, aber auch hier müsstest du die 1 wieder umschreiben - siehe:
http://docs.typo3.org/typo3cms/extensions/powermail/ForAdministrators/GoodToKnow/ManipulateValuesFromPowermailAll/Index.html

---

Ich würde die Termine vermutlich in irgendwelchen Datensätzen (tt_content, news, tt_news, etc...) durch Redakteure pflegen lassen. Den Select-View mit TypoScript aufbauen (siehe http://docs.typo3.org/typo3cms/extensions/powermail/ForAdministrators/GoodToKnow/PrefillField/Index.html#example-3 - wobei die uid des Datensatzes der value und der title der label wäre). In allen anderen views kann man dann die uid durch den titel wandeln lassen.

ShaBaNakk ·

Nochmals danke.

Ich schau mal ob Variante 1 vom Umfang her noch machbar ist. Die zweite Option übersteigt meinen Horizont leider ein wenig ;-)