[TYPO3-german] RTE in Frontend - doppelte Ausgabe von Body
Peter Linzenkirchner
liste at lisardo.de
Mon Jan 2 11:27:17 CET 2012
Hallo,
mein Problem mit mehreren Instanzen des RTE im Frontend ist leider immer noch nicht gelöst. Ich konnte es zwar etwas eingrenzen (und fürs erste auch einen Patch bauen), aber eine Lösung habe ich noch nicht.
Das Problem scheint in der Datei class.tx_rtehatmlarea_pi2.php liegen. Zunächst die Zeile 241:
$GLOBALS['TSFE']->additionalHeaderData['rtehtmlarea'] = $pageRenderer->render();
der erste Aufruf ergänzt korrekt um die Headerdaten (ExtJS, sonstiges JavaScript, CSS). Der zweite Durchlauf enthält aber dann die komplette Seite (= bodyContent im t3lib_PageRenderer-Objekt). Warum das der Fall ist, konnte ich noch nicht rausfinden. Abhilfe ist das hier:
unset($this->pageRenderer);
kurz vor
$this->pageRenderer = t3lib_div::makeInstance('t3lib_PageRenderer');
Anstatt also das pageRenderer-Objekt mehrmals zu nutzen patche ich momentan die class.tx_rtehatmlarea_pi2 so, dass die Instanz vor jedem Aufruf gelöscht und neu instanziiert wird. Das ist natürlich nicht so effektiv wie eine mehrfache Nutzung und ausserdem ein Patch, den ich immer wieder machen muss, nach jedem Update.
Wenn also jemand eine Idee hat, woran es letztendlich wirklich liegen könnte, wäre ich sehr dankbar. Da ich über Google schier gar nichts finde, gehe ich davon aus, dass das Problem eben nicht immer auftritt, wenn der RTE mehrmals im Frontend eingesetzt wird. Auch wenn es bei mir in mehreren TYPO3-installationen so ist ...
Danke
Peter
Am 23.12.2011 um 16:03 schrieb Peter Linzenkirchner:
> Hallo,
>
> ich habe folgendes Problem in TYPO3 4.5.4 bis 4.5.10:
>
> ich möchte in einer Extension den RTE im Frontend verwenden und zwar in mehreren Feldern. In einem Feld habe ich keine Probleme. Aber bei zwei oder mehr Feldern erhalte ich kurioser Weise den Body-Tag zweimal ausgegeben. Und zwar reicht dazu folgende Zeilen in der Extension:
>
>
> require_once(PATH_tslib.'class.tslib_pibase.php');
> require_once(t3lib_extMgm::extPath('rtehtmlarea').'pi2/class.tx_rtehtmlarea_pi2.php');
>
>
> class tx_ioevexample_pi2 extends tslib_pibase {
> // die normalen Definitionen wie in jeder pibase Extension
>
> }
>
> function main($content, $conf) {
> // die normalen Ausgaben wie bei jeder pibase-Extension, danach dann das hier:
> // RTE
> if(!$this->RTEObj) $this->RTEObj = t3lib_div::makeInstance('tx_rtehtmlarea_pi2');
> if($this->RTEObj->isAvailable()) {
> $RTEItem = $this->RTEObj->drawRTE();
> $RTEItem2 = $this->RTEObj->drawRTE();
> }
>
> ---
>
> es reicht also ein zweimaliger Aufruf von $this->RTEObj->drawRTE() aus, um einen doppelten Body-Bereich zu erhalten. Dabei lasse ich die Extension noch gar nichts ausgeben ... Wie gesagt, ein einzelnes Feld bekomme ich problemlos zum Laufen. Das zweite Feld funktioniert an sich auch, aber ich bekomme zwei komplette Seiten übereinender (eben doppelte body-Ausgabe). Getestet in zwei Installationen, mit deaktivierten Extensions. Nur System und meine ... Eine installation verwendet templaVoila, die andere fluid Templates.
>
> Ausserdem bekomme ich im Quelltext noch diesen ominösen Platzhalter: <!--###POSTJSMARKER###-->
>
> Weiß irgendjemand, was hier passiert, oder kann mir einen Tipp geben?
>
> Danke!
> Peter
>
> --
> Xing: http://www.xing.com/profile/Peter_Linzenkirchner
> Web: http://www.typo3-lisardo.de
> Facebook: http://tinyurl.com/lisardo-multimedia
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia
More information about the TYPO3-german
mailing list