TYPO3 – Mailformplus um einen Marker mit Typoscript erweitern

Problem:

Man möchte ein Mailformplusformular um einen zusätzlichen Marker erweitern, sodass dieser dann mit Daten aus der Datenbank befüllt werden kann. Super wäre es, wenn dies möglich wäre ohne PHP Dateien der Extension anzupassen, damit die Extension problemlos updatefähig bleibt.

Lösung:

Mit Typoscript ist dies sehr einfach umsetzbar. Man muss an der gewünschten Stelle im HTML-Template nur einen neuen Marker erstellen z.B. ###newfield###.

###newfield###

Als nächtes fügt man folgenden Typoscriptcode in sein Template ein und modifiziert ihn, sodass er auf die benötigte Daten in der Datenbank zugreift. Dies lässt sich problemlos an die eigenen Wünsche anpassen, egal ob es tt_news , tt_content oder eine selbst entwickelte Lösung ist.

In unserem Beispiel war es nötig bei einem Onlineformular die aktuell angebotenen Jobs auszulesen, damit der Kunde im TYPO3 Backend neue Jobs anlegen kann und diese automatisch mit in das entsprechende Formular aufgenommen werden und ein manuelles nachpflegen nicht mehr nötig ist.

temp.jobdata = COA
temp.jobdata {
	10 = CONTENT
	10 {
		table = tx_dmmjobcontrol_job
		select {
			# Seiten ID in der die Datensätze hinterlegt sind
			# können beliebig viele sein
			pidInList = 145,19

		}

		renderObj = COA
		renderObj {
			# Hier wird nun die Ausgabe erzeugt - mit {field:job_title}
			# wird auf das gewünschte Datenbankfeld zugegriffen
			10 = TEXT
			10.dataWrap = {field:job_title}
		}
	}
}

# Am Ende wird der Marker "newfield" mit der Ausgabe befüllt
plugin.tx_thmailformplus_pi1.markers.newfield < temp.jobdata

Fragen und Kommentare sind gerne gesehen. Traut euch! :-)

// Edit

Kleine Info und Korrektur

Dank an Georg Ringer!

tt_content benötigt keine Abfrage nach „hidden=0“ und „deleted = 0“, dies wird schon automatisch von tt-content erledigt.

Sobald man eine Abfrage mit GPvar macht, sollte ein „htmlSpecialChars = 1“ mit in der Abfrage sein, um SQL-Injection vorzubeugen.

Dies ist ein Beispielcode um einen tt_news Titel auszulesen, wenn die News ID per Variable mit übergeben wird.

temp.newstitle = COA
temp.newstitle {
	10 = CONTENT
	10 {
		table = tt_news
		select {
			pidInList = 3
			andWhere {
				data = GPvar:tx_ttnews|uid
				wrap =  tt_news.uid=|
				htmlSpecialChars = 1
			}
		}

		renderObj = COA
		renderObj {
			10 = TEXT
			10.dataWrap = {field:title}
		}
	}
}

plugin.tx_thmailformplus_pi1.markers.newstitle < temp.newstitle
  • Diesen Beitrag weiterempfehlen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Lösen Sie bitte die Rechenaufgabe. *