2013-08-06 23 views
0

我需要在schedular脚本中获得扩展typoscript设置。如何在计划程序/ cron脚本中获取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 
    } 
} 

在调度程序脚本中,我需要获取file.height值。 如何做到这一点?

目前我想这没有成功

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

谢谢。

回答

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

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

+0

嗨,我试过了你上面指定的第一种方式,但是它给出错误 致命错误:调用成员函数push()在/home/src/typo3_src-4.5.10/typo3/sysext中的非对象上/cms/tslib/class.tslib_fe.php 2079行 –

+0

我想你必须自己做一些调试。看看堆栈跟踪,检查给定的文件,看看哪个对象在那里。有可能,更多的东西需要被初始化。可能你需要的代码包含在另外两个例子中。 – Michael