Um Textfeld als RTE zu formatieren gibt es mehrere Möglichkeiten:
Fluid Rendering
Die einfachste Möglichkeit ist das Rendering über Fluid – man übergibt die Variable und f:format.html übernimmt den Rest.
<f:format.html>{textfield}</f:format.html>
Standardmäßig wird dabei folgendes gesetzt: parseFuncTSPath=“lib.parseFunc_RTE“. Hier kann man auch eine eigene parseFunc übergeben:
<f:format.html parseFuncTSPath="lib.myParseFunc">{textfield}</f:format.html>
Extbase RTE Formatierung
Früher gab es dafür die Funktion pi_RTEcssText(). Diese ist im Rahmen der piBased Kompatibilität über das AbstractPlugin noch verfügbar:
\TYPO3\CMS\Frontend\Plugin\AbstractPlugin: public function pi_RTEcssText()
Unter Extbase kann man sich auch einfach eine entsprechende Funktion erstellen:
/** * @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface * @inject */ protected $configurationManager; public function formatRTE($str) { $output = $this->configurationManager->getContentObject()->parseFunc($str, array(), '< lib.parseFunc_RTE'); return $output; }
alternative Möglichkeiten für das laden von cObj:
public function formatRTE($str) { //if available, use: $cObj = $this->objectManager->get('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjenctRederer'); //else: $cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjenctRederer'); $output = $cObj->parseFunc($str, array(), '< lib.parseFunc_RTE'); return $output; }
Links und Quellen:
Cool, dass ist genau was ich gerade benötige. Du hast meinen Tag gerettet 😉
Bei der alternativen Variante ist ein Schreibfehler drin:
es muss natürlich ContentObjectRenderer statt ContentObjenctRederer heißen!
Ich verwende den RTE in einer eigenen Extension. Im RTE-Content ist ein Link auf eine interne Page enthalten. Sowohl f:format.raw als auch f:format.html geben diesen Link als Typolink (t3://…) aus, womit er natürlich nicht mehr geöffnet werden kann. Ist da seitens Fluid / vhs beim Rendern etwas Besonderes vorgesehen?