Zum Inhalt springen

Tabellen im RTE

Erstellt am 5. Mai 2009 · 2 Antworten · letzte Antwort am 6. Mai 2009

Tags: Frage

Der Dude ·

Hallo zusammen,

Tabellen, die über das Seiteninhaltselement "Tabelle" eingefügt werden, enthalten innerhalb der <tr> <td> - Tags zusätzliche CSS-Klassen, über die man bspw. die erste und letzte Spalte gesondert formatieren kann (z.B. <td class="td-0"> <td class="td-last"> usw). Das Rendern übernimmt hierbei die css_styled_content.

Füge ich Tabellen direkt über den RTE ein, sind diese CSS - Klassen leider nicht enthalten. Gibt es die Möglichkeit auch bei diesen Tabellen das automatische Generieren dieser Klassen zu aktivieren? Das manuelle Zuweisen von CSS-Klassen zu einzelnen Zellen innerhalb des RTE's möchte ich keinem Redakteur zumuten.

Ich konnte hier bisher keinen Ansatz finden und hoffe, dass vielleicht jemand einen Tipp hat?

-----------
TYPO3 4.2.6
htmlArea RTE 1.7.9

froemken ·

Ich glaub nicht, dass das geht. Sämtliche Einstellungen für den RTE sind im TSConfig. Du benötigst aber eine userFunc, um die Tabellen entsprechend zu gestalten. Aber eine userFunc benötigt eine Eigenschaft mit stdWrap und die habe ich im Bereich TSConfig nicht gefunden. Hier ein Auszug aus der css_styled_content:

# *****************
# CType: table
# *****************
# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
tt_content.table = COA
tt_content.table {
10 = < lib.stdheader
20 = USER
20.userFunc = tx_cssstyledcontent_pi1->render_table
20.field = bodytext

Hier siehst du, dass die eine spezielle Funktion haben, um die Tabellen zu designen.

Welche Alternativen gibt es?
- Du kannst mit FCEs aus dem Paket TemplaVoila sowas bauen. Ist bestimmt nicht die collste Variante, aber es würde gehen. Zeile 1 und Zeile last wären fix einprogrammiert und die restlichen Zeilen erstellst du als Section. Wenn du nicht vertraut bist mit TV, dann steht viel Arbeit auf dem Plan.
- Ansonsten kannst du dem RTE diese 3 Klassen zur Verfügung stellen und die Redakteure könnten dann per DropDown die entsprechende Klasse für die jeweilige Tabellenzeile auswählen, aber mit Automatismus hat das nix mehr zu tun.
- Jeder Content auf der Webseite wird mit so a-Tags umschlossen. Diese a-Tags haben eine eindeutige ID. Mit einem selbstgebastelten JavaScript könntest du es vielleicht schaffen, diese Klassen pro Zeile nachträglich einzubauen.

froemken

Der Dude ·

Danke für deine Ideen! Die Lösung über TemplaVoila mit Sections würde eine feste Spaltenanzahl voraussetzen und das muss variabel bleiben. Weiterhin soll der Redakteur wie gewohnt komfortabel seine Tabellen im RTE basteln können, was bei TV nicht möglich wäre. Mit einem Javascript nachträglich die Tags über's DOM zu manipulieren wäre sicher möglich aber viel zu "overdosed" und nur bei aktiviertem JS verfügbar.

Die Lösung ist viel einfacher aber manchmal sieht man den Wald vor lauter Bäumen nicht. Was ich mit der CSS-Formatierung erreichen wollte, war den äußeren Border aller Zellen der ersten und der letzen Spalte auszublenden. Lässt man die Zellenrahmen zusammen fallen (border-collapse) kann man Wertigkeiten definieren (border-style:hidden). Darüber konnte ich den äußeren Rahmen über die inneren Zellenrahmen stellen und muss somit die betreffenden Zellen nicht mehr über bspw. die CSS-Klassen "td-0" oder "td-last" gesondert ansprechen.

Siehe: http://de.selfhtml.org/css/eigenschaften/tabellen.htm#border_collapse

Beispiel:

Bild: s8b.directupload.net/…/eihafx4q.jpg