Es ist häufig so, dass sich einzelne Seiten einer Webseite in kleinen Punkten unterscheiden. Es kann zum Beispiel sein, dass die Titel der Webseite oder andere grafische Elemente sich je nach Kategorie farblich unterscheiden sollen. Diese Unterschiede werden meist durch unterschiedliche CSS-Formatierungen definiert. Das Problem ist aber, dass im Template auf jeder Seite die selben ID’s und Klassen vorhanden sind. Wie können also beispielsweise die H1-Überschriften von konkreten einzelnen Seiten angesprochen werden?
Die grosse Keule – ein eigenes Template-File
Die konventionelle Variante ist die, für die gewünschte Seite ein Erweiterungs-Template zu erstellen, in dem ein eigenes Template-File eingebunden wird. In diesem File können dann die gewünschten Klassen definiert und via CSS angesprochen werden. Dies ist aber eine unschöne Lösung, da sich die Template-Files meist nur um diese konkrete Klasse vom Basis-Template unterscheiden. Und trotzdem muss für diese kleine Änderung jeweils das ganze Template neu geladen werden.
Die leichtere Variante – etwas Typoscript
Eine leichtere Variante bieten die folgenden Codezeilen. Auch hierfür wird auf den gewünschten Seiten ein Erweiterungs-Template erstellt. Anstatt aber ein komplett neues Template einzubinden, wird dem Body-Tag des Basis-Templates einfach eine spezielle Klasse (oder ID) hinzugefügt (im folgenden Code ist dies die Klasse „klassenname“).
page.bodyTagCObject = HTML
page.bodyTagCObject.value = <body class=“klassenname“>
page.bodyTagCObject.value.insertData = 1
Damit werden die entsprechenden Seiten und Unterseiten mit der angegebenen Klasse ergänzt. Möchte man nun beispielsweise die Überschriften auf diesen Seiten in roter Farbe haben, reicht es, in der CSS-Datei folgende Definition zu ergänzen:
.klassenname h1 {
color:red;
}
Bwahaha, das ist so geil … Wieso bietet dieses armselige CMS nicht einfach in den Seiteneinstellungen ein verdammtes Input-Feld an, in dem ich eine beliebige Anzahl an Klassen packen kann? Wozu muss ich da TypoScript bemühen? Wozu muss ich so einen unfassbar unnötigen Blödsinns-Workflow abfeuern, um ne Klasse im Body-Tag zu bekommen?
Da gebe ich Dir vollkommen recht! TYPO3 kann zwar einiges, was andere CMS nicht ohne weiteres können (z.B. Vektor-Dateien verarbeiten und grafische Menüs erstellen), aber der Workflow ist beschissen. Diesen Einsatz von TypoScript finde ich völlig unnötig. Dadurch müssen ja alle Aufgaben einmal mehr geparst werden. Wozu das? Die könnten sich mal ein Beispiel an WordPress nehmen! Da baut man alles schön mit PHP-Dateien auf und hat ein riesen Arsenal an vordefinierten Action- und Filter-Hooks und eine gut verständliche Dokumentation dazu. Solche Aufgaben wie die hier löst man einfach mit eigenen PHP-Conditions – wenn einem die, wie ich finde sehr gelungene semantische Struktur, die WP schon von Haus aus liefert (
<body <?php body_class(); ?>>
) nicht zusagt.Das eben geschriebene darf auch gerne als meine Reaktion auf diese ständigen Einladungen zur Weiterrentwicklung von TYPO3 gesehen werden! Statt diesen Blödsinn mit eigener, überflüssiger Scriptsprache zu fördern, sollte man m. E. lieber davon Abstand nehmen und seine Projekte mit einem anderen CMS umsetzen.
Da ist schon was dran. Schau Dir mal Contao an (www.contao.org). Kein TypoScript, sondern wenn überhaupt, dann PHP. Die neue Version 3.1 ist echt super geworden. Ich war gerade auf der Konferenz 2013 und die meisten Frontend- und Backend-Entwickler kommen von TYPO3. Sehr interessant. Und hier kannst Du auch beliebige IDs und Klassen in beliebiger Zahl per Eingabefeld definieren.
https://typo3.org/extensions/repository/view/cewrap
Wie wärs per Extension? btw, vergleiche mal die Redationssysteme und dann wirst Du schnell merken das WP und Contao auch nicht das Gelbe vom Ei sind. Jedes CMS hat seine Daseinsberechtigung. Im Enterprisebereich mit Workflows etc. pp fährt man mit Typo3 entschieden besser als mit beispielsweise WP oder Contao.
datenkind, du bist herzlich aufgerufen, dich aktiv an der Weiterentwicklung von TYPO3 unter forge.typo3.org zu beteiligen.
Die armselige Community freut sich schon auf deinen Patch um endlich den unnötigen Blödsinnsworkflow durch ein verdammtes Input-Feld für Body-Klassen zu verkürzen.
scnr…
Toller Beitrag! Gerade erst über Google gefunden.