CSS-Gestylte Tabellen in Typo3
Wer mal den RTE per Page-TS soweit konfiguriert hat, dass er selbst definierte Klassen annimmt, braucht trotzdem noch ein paar Einstellungen im Template.
Ein Fallstrick bei Typo3 kann sein, dass Typo3 versucht vom Redakteur eingegebenen oder genierten HTML-Code bei der Ausgabe zu säubern. Eigentlich ziemlich erfreulich, nur leider führt die Säuberungsaktion nicht immer zum gewünschten Ergebnis.
Weg mit class="bodytext"
Standardmässig weist Typo3 allen Absätzen die CSS-Klasse bodytext zu. Das kann mit einer Zeile im Template-Setup leicht unterdrückt werden:
Template-Setup:# Ein P bleibt ein P und wird nicht zum P class="bodytext"
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
Diese Zeile verhindert, dass bei Paragraph-Tags automatisch ein class=bodytext angehängt wird.
Im Editor angegebene Klasse bei Tabellen beibehalten
Standardmässig weist Typo3 einer Tabelle die Klasse contenttable zu, auch wenn im RTE der Tabelle eine andere Klasse zugewiesen wurde.
Mit folgenden Zeilen im Template-Setup lässt sich das verhindern:
Template-Setup:#
# Wenn einer Table im Editor eine Klasse zugewiesen wurde diese beibehalten
#
lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list >
Keine P's in Tabellenzellen generieren
Per default generiert Typo3 p-Tags um den Inhalt von im RTE eingegebenen Tabellen-Zellen. Mit lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default > im Template-Setup lässt sich verhindern, dass Typo3 Table-Zellen durch den Parser schickt und aufgrund der fehlenden Umschliessung mit P-Tags diese hinein generiert.
Da wirft allerdings das Problem auf, dass dann beispielsweie in einer Zelle eingegebene Links nicht mehr umgesetzt werden.
Dieses Problem lässt sich umgehen, indem man Typo3 anweist die Einstellungen von lib.ParseFunc zu übernehmen. Dadurch werden die Tags in Tabellen-Zellen geparst, ohne dass zuätzliche P-Tags generiert werden.
Template-Setup:# keine P in TD generieren aber trotzdem Inhalt parsen
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default >
lib.parseFunc_RTE.externalBlocks.table.HTMLtableCells.default.stdWrap.parseFunc =< lib.parseFunc
Kommentare
Und auch ich sage DANKE! Sehr saubere und präzise Lösung ohne viel Schnörkelei. Danach habe ich gesucht.
Da sage ich doch mal GANZ herzlichen Dank! Nach zwei Stunden Recherche: Die sauberste Lösung ohne ellenlangen Text für das Parsing. Große Freude!
