Question

J'ai besoin de créer des liens vers le site Web frontal dans une tâche de planificateur.J'ai cherché et regardé autour de moi et ce que j'ai trouvé est un exemple de script qui lance le TSFE.Après cela, je peux lancer tslib_cObj pour créer des liens;J'ai pensé.

Mais ce que j'obtiens, c'est une erreur de récursivité dès que j'essaye de créer un typolink en utilisant $ cObj-> typoLink_URL (1);fe.ou toute autre méthode permettant de créer un lien de type.

Ce qui suit est le script que j'utilise pour lancer la TSFE dans $ GLOBALS, tout comme lorsque je travaille dans une extension du frontend:

<?php
function initTSFE($pageUid = 1, $overrule = FALSE) {
    // declare
    $temp_TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');

    // begin
    if (!is_object($GLOBALS['TT']) || $overrule === TRUE) {
        $GLOBALS['TT'] = new t3lib_timeTrack;
        $GLOBALS['TT']->start();
    }

    if ((!is_object($GLOBALS['TSFE']) || $overrule === TRUE) && is_int($pageUid)) {
        // builds TSFE object
        $GLOBALS['TSFE'] = new $temp_TSFEclassName($GLOBALS['TYPO3_CONF_VARS'],
            $pageUid, $type=0, $no_cache=0, $cHash='', $jumpurl='', $MP='', $RDCT='');

        // builds rootline
        $GLOBALS['TSFE']->sys_page = t3lib_div::makeInstance('t3lib_pageSelect');
        $rootLine = $GLOBALS['TSFE']->sys_page->getRootLine($pageUid);

            // init template
        $GLOBALS['TSFE']->tmpl = t3lib_div::makeInstance('t3lib_tsparser_ext');
        $GLOBALS['TSFE']->tmpl->tt_track = 0;// Do not log time-performance information
        $GLOBALS['TSFE']->tmpl->init();

        // this generates the constants/config + hierarchy info for the template.
        $GLOBALS['TSFE']->tmpl->runThroughTemplates($rootLine, $start_template_uid=0);
        $GLOBALS['TSFE']->tmpl->generateConfig();
        $GLOBALS['TSFE']->tmpl->loaded=1;

        // get config array and other init from pagegen
        $GLOBALS['TSFE']->getConfigArray();
        $GLOBALS['TSFE']->linkVars = ''.$GLOBALS['TSFE']->config['config']['linkVars'];

        if ($GLOBALS['TSFE']->config['config']['simulateStaticDocuments_pEnc_onlyP']) {
            foreach (t3lib_div::trimExplode(',',$GLOBALS['TSFE']->config['config']['simulateStaticDocuments_pEnc_onlyP'],1) as $temp_p) {
                $GLOBALS['TSFE']->pEncAllowedParamNames[$temp_p]=1;
            }
        }

        // builds a cObj
        $GLOBALS['TSFE']->newCObj();
    }
}

Ce que j'essaie de faire dans la tâche du planificateur est le suivant:

<?php
public function execute() {
    $this->initTSFE();
    $cObj = t3lib_div::makeInstance('tslib_cObj');
    var_dump($cObj->getTypoLink_URL(1));exit;
}

Cela me montre le résultat suivant lors de l'exécution de cette tâche via le planificateur: http://i.imgur.com/DHzys.png

Toute aide est très appréciée=)

REMARQUE: La valeur 1 dans getTypoLink_URL existe en tant que page dans Typo3.

Était-ce utile?

La solution

Il semble y avoir un problème avec cette méthode initTSFE () que j'essayais d'utiliser.Je ne sais pas trop quoi, mais j'en ai trouvé une version différente qui semble fonctionner:

public function initTSFE($pageUid=1) {
    require_once(PATH_tslib.'class.tslib_fe.php');
    require_once(PATH_t3lib.'class.t3lib_userauth.php');
    require_once(PATH_tslib.'class.tslib_feuserauth.php');
    require_once(PATH_t3lib.'class.t3lib_cs.php');
    require_once(PATH_tslib.'class.tslib_content.php');
    require_once(PATH_t3lib.'class.t3lib_tstemplate.php');
    require_once(PATH_t3lib.'class.t3lib_page.php');

    $TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');

    if (!is_object($GLOBALS['TT'])) {
        $GLOBALS['TT'] = new t3lib_timeTrack;
        $GLOBALS['TT']->start();
    }

    // Create the TSFE class.
    $GLOBALS['TSFE'] = new $TSFEclassName($GLOBALS['TYPO3_CONF_VARS'],$pageUid,'0',1,'','','','');
    $GLOBALS['TSFE']->connectToMySQL();
    $GLOBALS['TSFE']->initFEuser();
    $GLOBALS['TSFE']->fetch_the_id();
    $GLOBALS['TSFE']->getPageAndRootline();
    $GLOBALS['TSFE']->initTemplate();
    $GLOBALS['TSFE']->tmpl->getFileName_backPath = PATH_site;
    $GLOBALS['TSFE']->forceTemplateParsing = 1;
    $GLOBALS['TSFE']->getConfigArray();
}

Merci voancea!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top