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
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 |, |
}
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
Oh man, der Klassiker: Wer lesen kann, ist klar im Vorteil. #paralyzed#
Die Antwort auf meine Frage gibt es hier:
http://typo3.org/extension-manuals/powermail/2.0.0/view/1/49/
#angry#
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?
Beispielverwendung
# {f:cObject(typoscriptObjectPath:'lib.weiterempfehlen',data:'{text}')}
lib.weiterempfehlen = TEXT
lib.weiterempfehlen.field = 0
# Debut Output
# lib.weiterempfehlen.data = debug:data
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!
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 ...
}
Vielen Dank! Du hast mir den entsprechenden Hint gegeben. 😃
Hab im "E-Mail Adresse des Empfänger" die Variablenname gesetzt.
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
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]
hi,
danke für die schnelle antwort.
wo binde ich den code ein?
lg
Das ist ein TypoScript-Beispiel. Das kommt z.B. in das Setup Feld in einem TypoScript-Extension-Template auf die Seite mit dem Powermail-Formular.
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!
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
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?
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.
Nochmals danke.
Ich schau mal ob Variante 1 vom Umfang her noch machbar ist. Die zweite Option übersteigt meinen Horizont leider ein wenig ;-)