Variablen im RTE
Ich bin das erste Mal über Marker im RTE gestolpert, das war Ende 2009 in einem Türchen das Advendskalender von jWeiland. Die Idee ist irgendwie cool. Einfach ein
constants.FIRMA = Das ist mein Firmenname
in das TS-Setup und schon kann man mit dem Marker ###FIRMA### den Firmenname in den RTE einbinden. Und falls sich dieser (warum auch immer) mal ändern sollte, braucht man den Firmenname nur im TS-Setup ändern und automatisch ändert sich der Firmenname auch im Frontend.
Ich bin damals auch über diese Seite gestolpert, die die oben genannte Vorgehensweise nochmals beschreibt und unter anderem auch eine Idee aufführt, wie man dynamische Marker in den RTE integrieren kann.
Die Idee der dynamischen Marker ist dort sehr gut erklärt, aber um mal eben die Seiten-ID, den Usernamen des angemeldeten Webseitenbenutzers und/oder ein kleineres Contentelement einzubinden sollte ein etwas geringerer Aufwand auch genügen.
Los geht's
Wir werden bei meiner Lösung des Problems auf alle Daten zugreifen können, die Ihr auch mit der stdWrap-Eigenschaft ".data" erreichen könnt. Wer sich auskennt wird wissen, dass man damit auch die Passwörter der Webseitenbenutzer auslesen kann. Deshalb schlage ich vor die folgenden Einstellungen nicht im Seitentemplate , sondern pro Seite mit Hilfe eines +extTemplates (Erweiterungs-Template) vorzunehmen:
TS-Setup:
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.innerStdWrap_all.insertData = 1
Mit nur dieser Zeile habt Ihr es nun geschafft auf alle TYPO3-Daten zuzugreifen. Hier mal ein Beispieltext, den Ihr nun in den RTE kopieren könnt:
Hallo {TSFE:fe_user|user|name}. Wie geht's? Dein Benutzername ist {TSFE:fe_user|user|username}. Die aktuell aufgerufene Seite hat die ID {PAGE:uid}
und jetzt mit eigenen CEs
Schaut Euch mal mit Hilfe des Template-Analysers das statische Template von css_styled_content an und sucht dort nach der Zeile "tt_content.text":
# *****************
# CType: text
# *****************
tt_content.text = COA
tt_content.text {
10 = < lib.stdheader
<--- Hier haben wir Platz für eigene Elemente --->
20 = TEXT
20 {
field = bodytext
required = 1
parseFunc = < lib.parseFunc_RTE
editIcons = tt_content:bodytext, rte_enabled
editIcons.beforeLastTag = 1
editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
prefixComment = 2 | Text:
}
}
Im oberen Codefragment habe ich einen Bereich markiert, den wir für eigene Contentelemente verwenden können (11 - 19).
Mit dieser Information können wir nun weitere Zeilen in unser TS-Setup einfügen:
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.innerStdWrap_all.insertData = 1
tt_content.text.11 = LOAD_REGISTER
tt_content.text.11.image.cObject = IMAGE
tt_content.text.11.image.cObject.file = fileadmin/templates/bilder/tolles-bild.png
tt_content.text.11.image.cObject.file.width = 230
tt_content.text.11.image.cObject.border = 1
tt_content.text.12 = LOAD_REGISTER
tt_content.text.12.meinText = Trallala Blabla
tt_content.text.21 = RESTORE_REGISTER
tt_content.text.22 = RESTORE_REGISTER
Im RTE könnt Ihr nun mit Hilfe diesen Textes auf diese beiden neuen CEs zugreifen:
In diesem Satz {REGISTER:image} befindet sich ein Bild und hier ist die Variable meinText: {REGISTER:meinText}
