Hallo,
in unserem Formular werden einige Felder mit den Werten aus fe_user gefüllt. Nun würde ich gerne in der E-Mail sichtbar machen, wenn der User ein Feld überschreibt.
Mache ich das lieber per TS oder über einen Hook?
Für einen Hook hätte ich natürlich eine Idee. Da könnte man ja relativ einfach (vermute ich) die geänderten Felder durchlaufen und gegen die DB checken.
Hat da jemand einen Vorschlag? 🙂 Schonmal vielen Dank im Voraus!
Viele Grüße,
Sebastian
Geht mit
- TypoScript
- UserFunc in TypoScript
- Über einen Hook
Das alles ist etwas Arbeit schätze ich...
Andere Frage, die in dem Zusammenhang auch interessant ist: Ich hatte es mal geschafft, dass per TS bestimmte Felder - egal, was der User dort eingetragen hat - in der E-Mail einen bestimmten Wert hatten.
Die Werte wurden also _nach_ dem Abschicken mit TypoScript überschrieben.
plugin.tx_powermail_pi1 {
mode.email.recipient_mail {
uid25 = TEXT
uid25.value = foobar
}
}
Dieser Abschnitt aus dem Beispiel-TS im Ext.-Ordner tut leider nix und mir fällt auch nicht mehr ein, wie ich das damals gemacht hab. Es ging auf jeden Fall. 😉
Hast' nen Tipp für mich? Vielen Dank!
edit:
Habs jetzt. Korrekterweise muss die zweite Zeile
mode.recipient_mail {
heißen. Mea culpa.
Würde jetzt gerne etwas aus der Datenbank auslesen und in die E-Mail werfen. Habe es jedoch bisher nicht hinbekommen. Hier mein TS:
lib.title = CONTENT
lib.title {
table = tt_news
select {
pidInList = 43
andWhere {
intVal = 1
data = GPvar:sid
wrap = tt_news.uid=|
}
}
renderObj = TEXT
renderObj.field = title
renderObj.wrap = <h1>|</h1>
}
plugin.tx_powermail_pi1 {
mode.recipient_mail {
uid25 < lib.title
}
}
In der E-Mail bleibt das Feld leider leer. Normalerweise müsste da doch ein TEXT-Objekt zurückgegeben werden, was man dann einfügen kann? Mit uid25 < lib.title.renderObj kommt <h1> </h1> raus.
Was mache ich falsch?
was ist wenn du den Wert direkt auf der Seite ausgibst:
page.20 < lib.title
P.S.: Bitte künftig bei neuer Frage einen neuen Post aufmachen
Funktioniert prima. Das hab ich ja auch z.B. auf der Seite davor als Seitentitel verwendet (deswegen auch das <h1>).
Ins Blaue:
Ich könnte mir eine Kollision vorstellen, da powermail selbst .field nutzt. Das könnte das .field aus dem Render Objekt überschreiben...
Hast du denn spontan eine Idee, wie man das umsetzen könnte? Werte aus der Datenbank in die E-Mail schmeißen, ohne prefill zu nutzen? (wäre ja mit relativ geringen Kenntnissen manipulierbar)
Was auf jeden Fall geht
Ändere das betroffene Feld in ein TypoScript Feld ab. Dann das Feld manuell nachbauen:
lib.feld = COA
lib.feld {
10 = TEXT
10.value = <input type="text" name="uid123" value="
20 < lib.title
30 = TEXT
30.value = " />
}
Ansonsten könnte man noch etwas mit dem Register probieren...
Das Nachbauen find ich eher blöd, da der Wert dann ja trotzdem wieder geändert werden kann. Habe mal was mit dem register versucht, jedoch wird der Wert nicht ausgegeben:
lib.coursedata = LOAD_REGISTER
lib.coursedata {
coursetitle = CONTENT
coursetitle {
table = tt_news
select {
pidInList = 43
andWhere {
intVal = 1
data = GPvar:sid
wrap = tt_news.uid=|
}
}
renderObj = TEXT
renderObj.field = title
}
}
page.20 = TEXT
page.20.data = register:coursetitle
Ich habe mit LOAD_REGISTER zu meiner Schande noch nichts gemacht, aber wenn ich mir den Artikel hier
http://typo3.schloebe.de/typoscript/inhalte-aus-unter-seiten-einer-elternseite-auslesen/
so ansehe, dann müsste es theoretisch funktionieren...
Leider lassen sich die Werte aus dem Register nicht übernehmen. Auch nicht mit Prefill. Folgendes hat keine Auswirkungen:
lib.test = CONTENT
lib.test {
...
renderObj = LOAD_REGISTER
renderObj {
regtest = TEXT
regtest.field = title
}
}
plugin.tx_powermail_pi1.prefill {
uid25 = TEXT
uid25.data = register:regtest
// leider leer!
}
Ich arbeite jetzt einfach erstmal mit hidden-Feldern und normalem prefill ohne Register. Ist zwar nicht ganz wasserdicht, aber ich denke, das wird es tun.