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.
http://wissen.netzhaut.de/typo3/extensionentwicklung/typolink-realurl-in-scheduler-tasks/
Aber wie genau geht es nun in Typo3 6.2.
Habe es angepasst und funktioniert nicht.
public function getCObj($id = 1, $typeNum = 0) {
if (!is_object($GLOBALS['TT'])) {
$GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\TimeTracker(); // t3lib_timeTrack;
$GLOBALS['TT']->start();
}
$GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], $id, $typeNum);
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->determineId();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->getConfigArray();
$cObj = GeneralUtility::makeInstance('tslib_cObj');
return $cObj;
}
Danke im Voraus für die Unterstützung.
metan
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
public function getCObj() {
global $TYPO3_CONF_VARS;
$pid = (GeneralUtility::_GET('id')) ? GeneralUtility::_GET('id') : 1;
$GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController', $TYPO3_CONF_VARS, $pid, 0, true);
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->fe_user = \TYPO3\CMS\Frontend\Utility\EidUtility::initFeUser();
$GLOBALS['TSFE']->id = $pid;
$GLOBALS['TSFE']->initTemplate();
\TYPO3\CMS\Core\Core\Bootstrap::getInstance();
$GLOBALS['TSFE']->cObj = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
}
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
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...
function initTSFE($id = 1, $typeNum = 0) {
if (!is_object($GLOBALS['TT'])) {
$GLOBALS['TT'] = new \TYPO3\CMS\Core\TimeTracker\NullTimeTracker;
$GLOBALS['TT']->start();
}
$GLOBALS['TSFE'] = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController', $GLOBALS['TYPO3_CONF_VARS'], $id, $typeNum);
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->determineId();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->getConfigArray();
if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('realurl')) {
$rootline = \TYPO3\CMS\Backend\Utility\BackendUtility::BEgetRootLine($id);
$host = \TYPO3\CMS\Backend\Utility\BackendUtility::firstDomainRecord($rootline);
$_SERVER['HTTP_HOST'] = $host;
}
}
$this->initTSFE();
/** @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj */
$cObj = GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer');
$cObj->typolink_URL(array('parameter' => '123', 'forceAbsoluteUrl' => 1));
Viele Grüße
Julian
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 $GLOBALS['TSFE']->determineId(); drin ist, kommt gar keine Fehlermeldung, es bleibt einfach alles grau.
Wenn die Zeile auskommentiert wird kommt die Fehlermeldung:
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
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
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.
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
Prima :-)
Danke für den Anstoß zum Aktualisieren des Blogartikels.
Sieben Jahre ist dieser Beitrag her...
aber weil es bestimmt andere gibt, die über ihn stolpern:
Sehr einfach kann das mit diesem Einzeiler gelöst werden:
\nn\t3:Page()->getLink( $pageUid, $params )
Einzige Voraussetzung: Die Extension "nnhelpers" muss ein wenig unter die Arme greifen... 🙂
https://extensions.typo3.org/extension/nnhelpers