[Frage] Extbase + Backend + Typolink + Typo3 6.2

  • metan metan
    R2-D2
    0 x
    70 Beiträge
    0 Hilfreiche Beiträge
    07. 11. 2014, 22:08

    Hi,

    ich verwende Typo3 6.2. Wie man bisher über einen "Workaround" im Backend typolink's generiert ist mir klar.
    So ähnlich ging es bisher.
    [url]http://wissen.netzhaut.de/typo3/extensionentwicklung/typolink-realurl-in-scheduler-tasks/[/url]

    Aber wie genau geht es nun in Typo3 6.2.
    Habe es angepasst und funktioniert nicht.

    1. public function getCObj($id = 1, $typeNum = 0) {
    2. if (!is_object($GLOBALS['TT'])) {
    3. $GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\TimeTracker(); // t3lib_timeTrack;
    4. $GLOBALS['TT']->start();
    5. }
    6.  
    7. $GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], $id, $typeNum);
    8. $GLOBALS['TSFE']->connectToDB();
    9. $GLOBALS['TSFE']->initFEuser();
    10. $GLOBALS['TSFE']->determineId();
    11. $GLOBALS['TSFE']->initTemplate();
    12. $GLOBALS['TSFE']->getConfigArray();
    13.  
    14. $cObj = GeneralUtility::makeInstance('tslib_cObj');
    15. return $cObj;
    16. }

    Danke im Voraus für die Unterstützung.
    metan


  • 1
  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    08. 11. 2014, 10:16

    http://typo3.org/documentation/snippets/sd/455/

  • metan metan
    R2-D2
    0 x
    70 Beiträge
    0 Hilfreiche Beiträge
    09. 11. 2014, 22:13

    Danke dir.
    Aber irgendetwas mache ich noch falsch. Es kommt ständig Fehlern, dass der push() auf ein non-Object nicht funktioniert.

    Habe es mir angepasst

    1. public function getCObj() {
    2. global $TYPO3_CONF_VARS;
    3. $pid = (GeneralUtility::_GET('id')) ? GeneralUtility::_GET('id') : 1;
    4.  
    5. $GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController', $TYPO3_CONF_VARS, $pid, 0, true);
    6. $GLOBALS['TSFE']->connectToDB();
    7. $GLOBALS['TSFE']->fe_user = \TYPO3\CMS\Frontend\Utility\EidUtility::initFeUser();
    8. $GLOBALS['TSFE']->id = $pid;
    9. $GLOBALS['TSFE']->initTemplate();
    10. \TYPO3\CMS\Core\Core\Bootstrap::getInstance();
    11. $GLOBALS['TSFE']->cObj = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
    12. }

    So kommen zwar keine Fehler mehr, aber bei einem getTypoLink stürtzt der Scheduler immer ab. Beim Debug auf die verfügbaren Methoden vom cObj sind alle typo-Link Methoden dabei.
    Bin irgendwie auf dem Schlauch.

    Grüße
    metan

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2836 Beiträge
    105 Hilfreiche Beiträge
    10. 11. 2014, 13:07

    Hallo metan.

    Was heißt denn genau "funktioniert nicht". Gibt's eine Fehlermeldung?

    Hab meinen Schnipsel auch mal auf Namspaces umgeschrieben. Und zumindest der Aufruf der typolink-Methode klappt...

    1. function initTSFE($id = 1, $typeNum = 0) {
    2. if (!is_object($GLOBALS['TT'])) {
    3. $GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\NullTimeTracker;
    4. $GLOBALS['TT']->start();
    5. }
    6. $GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], $id, $typeNum);
    7. $GLOBALS['TSFE']->connectToDB();
    8. $GLOBALS['TSFE']->initFEuser();
    9. $GLOBALS['TSFE']->determineId();
    10. $GLOBALS['TSFE']->initTemplate();
    11. $GLOBALS['TSFE']->getConfigArray();
    12.  
    13. if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('realurl')) {
    14. $rootline = \TYPO3\CMS\Backend\Utility\BackendUtility::BEgetRootLine($id);
    15. $host = \TYPO3\CMS\Backend\Utility\BackendUtility::firstDomainRecord($rootline);
    16. $_SERVER['HTTP_HOST'] = $host;
    17. }
    18. }

    1. $this->initTSFE();
    2. /** @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj */
    3. $cObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer');
    4. $cObj->typolink_URL(array('parameter' => '123', 'forceAbsoluteUrl' => 1));

    Viele Grüße
    Julian

  • metan metan
    R2-D2
    0 x
    70 Beiträge
    0 Hilfreiche Beiträge
    10. 11. 2014, 19:49

    Hi Julian,

    kann mich drehen und wenden wie ich will, es kommt immer zum Absturz vom Scheduler. In meiner eigenen Funktion ist sogar nur der gleiche Aufruf drin wie dir angegeben.

    Wenn die Zeile [i]$GLOBALS['TSFE']->determineId();[/i] drin ist, kommt gar keine Fehlermeldung, es bleibt einfach alles grau.

    Wenn die Zeile auskommentiert wird kommt die Fehlermeldung:
    [i]Execution of task "Extbase CommandController Task (extbase)" failed with the following message: Task failed to execute successfully. Class: TYPO3\CMS\Extbase\Scheduler\Task, UID: 6[/i]

    Bin ehrlich gesagt mit meinem Lateien am Ende. Es gibt zwar noch den Weg, dass der Scheduler eine FE-Klasse in einer FE-Page aufruft, dass ist aber nicht die saubere Version.

    Grüße
    metan

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2836 Beiträge
    105 Hilfreiche Beiträge
    10. 11. 2014, 21:52

    Hm...

    Du übergibst eine PageID an initTSFE()? Bzw. es existiert eine mit ID=1 (Default-Wert)?
    Ist die Rootpage als "Root of Website" markiert (Weltkugel-Icon)?

    Hast Du mal die ganzen Debug- udn Fehlermeldungschalter angemacht? --> Development Preset im Install-Tool. Mit etwas technischerer, ausführlicherer Meldung wäre besser der Ursache auf die Spur zu kommen.

  • metan metan
    R2-D2
    0 x
    70 Beiträge
    0 Hilfreiche Beiträge
    10. 11. 2014, 22:20

    Hallo Julian,

    es funktioniert.
    Wenn ich dir sage woran es gelegen hat, dann ... ;-)
    Es hat auf jeden Fall was mit der Weltkugel zu tun.

    Vielen Dank für deine Hilfe.

    Grüße
    Metan

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2836 Beiträge
    105 Hilfreiche Beiträge
    10. 11. 2014, 22:44

    Prima :-)

    Danke für den Anstoß zum Aktualisieren des Blogartikels.

  • 1