Zum Inhalt springen

Plugins und das TEMPLATE-Objekt

Erstellt am 20. September 2010 · 1 Antwort · letzte Antwort am 29. Oktober 2010

Tags: Frage

smilecloud ·

Hallo Forum,

Ich habe mein Templavoila-Objekt als Template-Objekt definiert:

page.10 = TEMPLATE
page.10 {
  template = USER
  template.userFunc = tx_templavoila_pi1->main_page

  marks.TEST = TEXT
  marks.TEST.value = Hello, I am your Marker
}

Dies soll bewirken, dass ich an beliebiger Stelle ###TEST### eingeben kann, welches mir dann durch meinen Text "Hello, ..." ersetzt wird. Klappt soweit in Text-Elementen, die ich auf den Seiten plaziere.
Füge ich nun den Platzhalter ###TEST### in ein Tempalte-File für eine Extension (z.B. felogin), dann wird dieser Marker NICHT ersetzt und unverändert ins FE gerendert.

Hat jemand eine Idee, woran das liegt bzw. ob sich dieses Verhalten ändern lässt?

Hintergrund:
Mich stört es, mehrere Tempaltefiles (je eins für jede Sprache) für gewisse Extension zu pflegen, wenn ich z.B. Bilder darin verwende, die sich je nach Sprache ändern müssen. Beispielsweise einen grafischen Loginbutton in felogin.
Wenn ich die Sprach-Uid in einem globalen Marker hätte, und mir dieser ersetzt werden würde, dann könnte ich in einem Templatefile alle Image-Files ansprechen:

<input type="image"  src="fileadmin/templates/felogin/img/login_###LANGUAGE_UID###.gif" alt="###LOGIN_LABEL###" />

Grüße,
Peter

Oliver Thiele ·

Für das Erstezen von Markern gibt es normalerweise das Top-Level-Objekt (TLO) constants. Ansonsten gibt es noch parseFunc.short zum Ersetzen von Texten. Somit müsste man nicht mehr mit einer Mischung aus herkömmlichen TEMPLATE-cObject und TemplaVoila arbeiten. Allerdings haben auch diese das selbe Problem: Innerhalb von ungecachten Elementen klappt das Ersetzen nicht. Die einzige Möglichkeit sehe ich auf die Schnelle darin, einen Hook zu suchen, der kurz vor der Auslieferung an den Browser verwendet wird oder durch Änderung der TYPO3 Sourcen...gegebenenfalls über XCLASS.

Hier mal ein Beispiel für den Einsatz von constants und short

constants {
	# ersetzt alle gecachten Marker ###MYEMAIL###
	MYEMAIL = meine(at)email.loc
}
page = PAGE
page{
	stdWrap {
		parseFunc {
			constants = 1
			# Ersetzt jedes (gecachte) Vorkommen von T3
			short.T3 = TYPO3
		}
	}
	10 = USER
	10.userfunc = tx_templavoila_pi1->main_page
	# ...
}