Pregunta

Necesito crear enlaces al sitio web frontend dentro de una tarea de programador. He buscado y mirado a su alrededor y lo que he encontrado es un script de ejemplo que inicia el TSFE. Después de eso, puedo iniciar tslib_cobj para crear algunos enlaces; Pensé.

Pero lo que obtengo es un error de recursión tan pronto como intento crear un Typolink usando $ COBJ-> TYPOLINK_URL (1); Fe. o cualquier otro método que permita crear un Typolink.

El siguiente es el script que utilizo para iniciar el TSFE dentro de $ Globals, al igual que cuando se trabaja dentro de una extensión en la 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();
    }
}

Lo que estoy probando en la tarea del programador es lo siguiente:

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

Esto me muestra el siguiente resultado al ejecutar esta tarea a través del programador:http://i.imgur.com/dhzys.png

Cualquier ayuda es muy apreciada =)

Nota: El valor 1 dentro de GetTypolink_URL existe como una página en TIPO3.

¿Fue útil?

Solución

Parece haber algo mal con este método inittsfe () que estaba tratando de usar. No estoy seguro de qué, pero he encontrado una versión diferente que parece funcionar:

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();
}

¡Gracias Voancea!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top