Seitenelemente in Abhängigkeit der Spalte unterschiedlich formatieren
Möchten Sie die Spalten Normal, Links, Rechts und Rand im Frondend unterschiedlich formatieren, hilft meist schon die Verwendung von CSS. Allerdings kann es auch vorkommen, daß sie z.B. Seitenelemente in der Rand-Spalte komplett umschreiben wollen.
Schauen Sie sich daher erst einmal an, was Typo3 macht, wenn ein Seitenelement ausgegeben werden soll.
TypoScript (Setup)
page.10.marks { CONTENT_NORMAL = CONTENT CONTENT_NORMAL { table = tt_content select { where = colPos = 0 orderBy = sorting languageField = sys_language_uid } } }
Typo3 intern
Folgendes passiert, wenn Typo3 einen Marker mit einem cObject CONTENT ausgeben soll:
- Typo3 macht eine Abfrage, welche Datensätze angezeigt werden sollen. In diesem Beispiel sollen die Inhalte aus der Tabelle tt_content kommen (Zeile 4). Daß nur Inhalte der aktuellen Seite ausgegeben werden soll nimmt Typo3 automatisch an.
Die Inhalte sollen nur aus der Spalte normal ausgegeben werden (Zeile 6).
Sortiert wird die Ausgabe anhand des sorting-Felds.
Bei einsprachigen Seiten muss Zeile 8 nicht angegeben werden. Diese Zeile sorgt dafür, daß nur die aktuelle Sprache ausgegeben wird. - Nachdem Typo3 nun weiß, was ausgegeben werden soll, muss Typo3 noch wissen, wie die Inhalte ausgegeben werden müssen.
Typo3 sucht nun standardmässig noch einer Beschreibung, wie Inhalte aus tt_content ausgegeben werden sollen. Meist haben Sie aus diesem Grund schon das statische Template content(default) oder css_styled_content im Template hinzugefügt.
Aufgabe ist es nun, Typo3 mitzuteilen, daß die Beschreibung für die Ausgabe von Seitenelementen dieses mal nicht direkt aus tt_content kommen soll, sondern aus einem selber neu geschriebenen tt_content oder aus einem modifizierten tt_content.
TypoScript (Setup)
page.10.marks{ CONTENT_NORMAL = CONTENT CONTENT_NORMAL { table = tt_content select { where = colPos = 0 orderBy = sorting languageField = sys_language_uid } } CONTENT_RECHTS = CONTENT CONTENT_RECHTS { table = tt_content select { where = colPos = 2 orderBy = sorting languageField = sys_language_uid } renderObj < tt_content renderObj.stdWrap.wrap ( <table width="100%" border="1"> <tr><td bgcolor="#FF0000"> </td></tr> <tr><td>|</td></tr> </table> ) renderObj.stdWrap.required = 1 } }
Code-Erläuterung:
In Zeile 19 wird definiert, das wir das Rendern dieser Inhalte aus der Beschreibung tt_content haben wollen, nur diesmal ist unser renderObj eine Kopie! Somit haben Sie ein Orginal tt_content für Ihren Content-Normal-Marker und eine Kopie, die Sie komplett neu- oder umschreiben könnten, für Ihren Content-Rechts-Marker.
In diesem Beispiel wurde jedes Seitenelement der Rechts-Spalte mit einer Tabelle umgeben.




