2013-08-06 35 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