RTE für Extbase-Extensions konfigurieren

Wer sich mit dem RTE in TYPO3 schon einmal genauer auseinander gesetzt hat, der weiß, dass für die interne Speicherung und Verarbeitung von Links nicht der gewöhnliche HTML-Tag <a> verwendet wird. Vielmehr arbeitet der RTE intern mit einem <link>-Tag. Auf den ersten Blick mag das seltsam erscheinen, bei näherer Betrachtung ist das jedoch logisch und konsequent.

Dieser <link>-Tag wird nämlich beim Frontend-Rendering nicht direkt ausgegeben, sondern als TypoLink geparst. Das hat viele Vorteile, wie z.B. die Steuerung des Targets für externe und interne links, oder auch die Konvertierung von numerischen ID-Links in korrekte realurl-Links.

Bedauerlicherweise ist die Speicherung der Links als <link> nicht unbedingt voreingestellt. Bei modernen Extbase-Extensions, die z.B. mit der Extension extension_builder erstellt werden, lässt sich wunderbar ein Textfeld mit RTE anbinden. Allerdings fehlt im TCA der entscheidende Teil, um den RTE für den <link>-Tag zu konfigurieren.

Das bedeutet, dass Links in der Datenbank wirklich wie folgt gespeichert werden. Und auch genauso im Frontend ausgegeben werden:

<a href="http://www.example.com/?id=123">Link to page</a>

Dies hat zur Folge, dass der Link nicht per TypoScript konfiguriert werden kann und außerdem bei einem Domain-Wechsel auch noch zahlreiche feste Links geändert werden müssten.

Korrekt wäre vielmehr die TYPO3-eigene Schreibweise, mit der der Link in der Datenbank gespeichert sein sollte:

<link 123>Link to page</link>

Behoben werden kann das Problem durch einen direkten Eingriff in die entsprechende TCA-Datei. In der Regel muss dazu die types-Konfiguration der Tabelle angepasst werden. In besonderen Fällen kann sich das Feld auch im Bereich palettes befinden. In unserem Beispiel betrachten wir die Konfiguration für das Feld description

$TCA['tx_mycalendar_domain_model_event'] = array(
	// ...
	'types' => array(
		'1' => array('showitem' => 'title, description, image, date'),
	),
	// ...
);

Die RTE-Konfiguration wird einfach als Parameter, nach dem dritten Semikolon, an das Feld angehängt.

$TCA['tx_mycalendar_domain_model_event'] = array(
	// ...
	'types' => array(
		'1' => array('showitem' => 'title, description;;;richtext:rte_transform[mode=ts_links], image, date'),
	),
	// ...
);

Alternativ zu ts_links, welches die entscheidende Konfiguration beinhaltet, können auch andere Schlüsselwörter angehängt werden. Entweder durch Komma getrennt, oder durch die Verwendung der vorgefertigten Pakete ts oder ts_css verwendet werden, die ebenfalls das benötigte ts_links beinhalte.

description;;;richtext:rte_transform[mode=ts]
description;;;richtext:rte_transform[mode=ts_css]
description;;;richtext:rte_transform[mode=ts_transform,ts_links]

Ein Gedanke zu „RTE für Extbase-Extensions konfigurieren“

  1. Vielen Dank! Das hat meinen Tag gerettet. Dachte die ganze Zeit der TCA-Eintrag ‚defaultExtras‘ => ‚richtext:rte_transform[flag=rte_enabled]‘, würde ausreichen um die richtige RTE Erzeugung herauf zu beschwören.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.