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, dass 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)

TypoScript
  1. page.10.marks {
  2. CONTENT_NORMAL = CONTENT
  3. CONTENT_NORMAL {
  4. table = tt_content
  5. where = colPos = 0
  6. orderBy = sorting
  7. languageField = sys_language_uid
  8. }
  9. }
  10. }

TYPO3 intern

Folgendes passiert, wenn TYPO3 einen Marker mit einem cObject CONTENT ausgeben soll:

  1. TYPO3 macht eine Abfrage, welche Datensätze angezeigt werden sollen. In diesem Beispiel sollen die Inhalte aus der Tabelle tt_content kommen (Zeile 4). Dass 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, dass nur die aktuelle Sprache ausgegeben wird.
  2. Nachdem TYPO3 nun weiß, was ausgegeben werden soll, muss TYPO3 noch wissen, wie die Inhalte ausgegeben werden müssen.
    TYPO3 sucht nun standardmäßig 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, dass 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)

TypoScript
  1. page.10.marks{
  2. CONTENT_NORMAL = CONTENT
  3. CONTENT_NORMAL {
  4. table = tt_content
  5. where = colPos = 0
  6. orderBy = sorting
  7. languageField = sys_language_uid
  8. }
  9. }
  10. CONTENT_RECHTS = CONTENT
  11. CONTENT_RECHTS {
  12. table = tt_content
  13. where = colPos = 2
  14. orderBy = sorting
  15. languageField = sys_language_uid
  16. }
  17. renderObj < tt_content
  18. renderObj.stdWrap.wrap (
  19. <table width="100%" border="1">
  20. <tr><td bgcolor="#FF0000">&nbsp;</td></tr>
  21. <tr><td>|</td></tr>
  22. </table>
  23. )
  24. renderObj.stdWrap.required = 1
  25. }
  26. }

Code-Erläuterung:

In Zeile 19 wird definiert, dass 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.