cObj in Scheduler-Task verwenden
Scheduler-Tasks haben nicht den vollen Umfang aller TYPO3-Funktionen zur Verfügung, da diese ohnehin oftmals nicht benötigt werden. Manchmal braucht man aber spezielle Funktionen/Methoden, um z.B. Bilder rendern zu lassen oder mit HTML-Templates arbeiten zu können. Hierzu wird oft das cObj benötigt, welches im Scheduler-Task aber nicht vollständig vorliegt bzw. komplett fehlt.
Hierzu sorgen folgende Zeilen für Abhilfe:
chdir(PATH_site); if(!$GLOBALS['TSFE'] instanceof tslib_fe){ $GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], 0, 0); $GLOBALS['TSFE']->config['config']['language'] = null; $GLOBALS['TSFE']->initTemplate(); } if(!isset($GLOBALS['TT'])){ $GLOBALS['TT'] = t3lib_div::makeInstance('t3lib_TimeTrackNull'); } $GLOBALS['TSFE']->tmpl->getFileName_backPath = PATH_site; $cObj = t3lib_div::makeInstance('tslib_cObj');
Danke für Euren Post. Das habe ich gesucht. Allerdings bekomme ich statt einem cObject einen Fehler:
Fatal error: Call to a member function push() on a non-object in /(…)/typo3_src/typo3_src-4.5.20/typo3/sysext/cms/tslib/class.tslib_fe.php on line 587
In welcher TYPO3-Version setzt ihr das ein?
Hallo Julian,
hier mal die komplette Methode createCObj, welche bei uns die Lösung brachte:
Und dann einfach nur ein
und Du kannst auf Dein $this->cObj zugreifen. Bei uns funktioniert es so problemlos!
P.S.: In der Methode besteht garantiert noch Säuberungsbedarf. Wer möchte, kann sich hier gern daran probieren und sein Ergebnis wieder hier posten. Danke!
Wenn ich diese Funktion im Scheduler einsetze und diesen per Backend starte wird mir (im Backend) eine Seite aus dem Frontent mit Error 404 angezeigt… echt merkwürdig.
Hab schon Lösungen von anderen Seiten probiert, mit denen ich das TSFE laden und das SetupTS auslesen konnte, aber der aufruf von $this->cObj->enableFields($table) geht dann in der class.tslib_content.php in Zeile 7103 schief, weil dort $GLOBALS[‚TSFE‘]->sys_page->enableFields(…) den Methodenaufruf eines non-objects darstellt.
In der Extension sp-guestbook (archiviert) gibt es eine Methode „simulateFrontend“, die das $GLOBALS[‚TSFE‘] für das Backend erzeugt: https://github.com/TYPO3-svn-archive/sp_guestbook/blob/master/Classes/Utility/TypoScript.php
Für den Scheduler also wie folgt benutzen: