如何在scheduler / cron脚本中设置typoscript?

时间:2013-08-06 06:55:24

标签: typo3

我需要在调度脚本中设置扩展名typoscript。

我正在使用typo3 v 4.5。

我的日程安排脚本看起来像这样。

class tx_myext_scheduler extends tx_scheduler_Task { 
    public function execute() {
        //here i need to get typoscript setup
    }
}

我的扩展程序设置如下所示。

plugin.tx_myext_pi1{
    listView{
        file.height = 216c
    }
}

在schedualr脚本中,我需要获取file.height值。 怎么做?

目前我尝试了这个没有成功

$pObj = $GLOBALS['TSFE'];
$conf = $pObj->tmpl->setup['plugin.']['tx_myext_pi1.'];

谢谢。

2 个答案:

答案 0 :(得分:0)

TSFE仅在前端可用,因此必须自己初始化(这会消耗一些资源!)。您可以在调度程序中创建它:(source

$GLOBALS['TT'] = new t3lib_timeTrackNull;
$GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], 2, 0);
$GLOBALS['TSFE']->sys_page = t3lib_div::makeInstance('t3lib_pageSelect');
$GLOBALS['TSFE']->sys_page->init(TRUE);
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->rootLine = '';
$GLOBALS['TSFE']->sys_page->getRootLine(1, '');
$GLOBALS['TSFE']->getConfigArray();

或在eID脚本中:(source

require_once(PATH_tslib.'class.tslib_fe.php');
require_once(PATH_t3lib.'class.t3lib_page.php');
$temp_TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');
$GLOBALS['TSFE'] = new $temp_TSFEclassName($TYPO3_CONF_VARS, $pid, 0, true);
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->determineId();
$GLOBALS['TSFE']->getCompressedTCarray();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->getConfigArray();

或在后端模块中:(source

function loadTypoScriptForBEModule($extKey) {
    require_once(PATH_t3lib . 'class.t3lib_page.php');
    require_once(PATH_t3lib . 'class.t3lib_tstemplate.php');
    require_once(PATH_t3lib . 'class.t3lib_tsparser_ext.php');
    list($page) = t3lib_BEfunc::getRecordsByField('pages', 'pid', 0);
    $pageUid = intval($page['uid']);
    $sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect');
    $rootLine = $sysPageObj->getRootLine($pageUid);
    $TSObj = t3lib_div::makeInstance('t3lib_tsparser_ext');
    $TSObj->tt_track = 0;
    $TSObj->init();
    $TSObj->runThroughTemplates($rootLine);
    $TSObj->generateConfig();
    return $TSObj->setup['plugin.'][$extKey . '.'];
}

如果您在某处遗漏了类错误,可能需要添加一些要求。

答案 1 :(得分:0)

如果页面处于标准模式,此解决方案是完美的,但如果页面是草稿则不起作用:

function loadTypoScriptForBEModule($extKey) {
    require_once(PATH_t3lib . 'class.t3lib_page.php');
    require_once(PATH_t3lib . 'class.t3lib_tstemplate.php');
    require_once(PATH_t3lib . 'class.t3lib_tsparser_ext.php');
    list($page) = t3lib_BEfunc::getRecordsByField('pages', 'pid', 0);
    $pageUid = intval($page['uid']);
    $sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect');
    $rootLine = $sysPageObj->getRootLine($pageUid);
    $TSObj = t3lib_div::makeInstance('t3lib_tsparser_ext');
    $TSObj->tt_track = 0;
    $TSObj->init();
    $TSObj->runThroughTemplates($rootLine);
    $TSObj->generateConfig();
    return $TSObj->setup['plugin.'][$extKey . '.'];
}