0

我需要在计划脚本中设置扩展打字稿。

我正在使用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.'];

谢谢你。

4

2 回答 2

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 脚本中:(来源

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 . '.'];
}

如果您在某处缺少类错误,也许您必须添加一些要求。

于 2013-08-06T07:18:42.293 回答
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 . '.'];
}
于 2018-03-30T13:44:27.843 回答