Поэтому мне была назначена задача, которая обычно была бы тривиальной, но она должна работать на довольно старом Typo3-Website (4.5). Я очень неопытен с Typo3.
Чтобы сделать вызов AJAX, я узнал, что мне нужен eID, мой собственный файл класса, я узнал, как вызвать основную функцию и все такое.
Теперь у меня много настроек во многих разных местах, и мне нужно получить доступ к этой информации.
В class.tx_as_es_pi1.php
function main($content, $conf)
имеет этот очень удобный параметр $conf
. Кажется, что это доступно некоторыми масками Typo3. Пытаясь каким-то образом подражать этому поведению, я пробовал этот ответ, и он предоставляет мне некоторую конфигурацию, используя следующие строки:
$conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_ases_pi1.'];
var_dump($conf);
Я получаю этот результат:
'includeLibs' => string 'typo3conf/ext/as_es/pi1/class.tx_as_es_pi1.php' (length=46)
'userFunc' => string 'tx_ases_pi1->main' (length=17)
но Typoscript Object Browser показывает намного больше (включая то, что мне нужно):
[tx_ases_pi1] = USER_INT # TypoScript added by extension "as_es" # Setting as_es plugin TypoScript
[includeLibs] = typo3conf/ext/as_es/pi1/class.tx_as_es_pi1.php
[userFunc] = tx_ases_pi1->main
[config_template] = EXT:as_es/templates/results_elkwue.htm
[config_template_extended] = EXT:as_es/templates/extended_elkwue.htm
[config_searchaccesskey] = someAccessKey
[config_searchproxy] = someProxyUrl
[config_searchfilterurl] = soeSearchFilterUrl
[config_searchshowstat] = 1
[config_utf8decode] = 1
[config_maxtitlelength] = 50
[config_removefromtitle] = SomeString
[config_piwiktracking_host] = somePiwikHost
[config_piwiktracking_port] = 80
[config_piwiktracking_id] = SomeID
[config_fedebug_messages_search] = {$plugin.tx_ases_pi1.configuration.fedebug_messages_search}
Итак, очевидно, я кое-что не понимаю. Может ли кто-нибудь указать мне в правильном направлении?
[РЕДАКТИРОВАТЬ] Ответ в соответствующем вопросе дает только некоторые данные конфигурации, как показано выше. Я ищу подсказку о том, как получить оставшуюся часть данных.
Хорошо. Я нашел ответ на этот вопрос в этом старом посте.
В классе eID добавьте этот метод:
/**
* Initializes TSFE and sets $GLOBALS['TSFE'].
*
* @return void
*/
protected function initTSFE() {
$GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe',
$GLOBALS['TYPO3_CONF_VARS'], t3lib_div::_GP('id'), '');
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->checkAlternativeIdMethods();
$GLOBALS['TSFE']->determineId();
$GLOBALS['TSFE']->getCompressedTCarray();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->getConfigArray();
// Get linkVars, absRefPrefix, etc
TSpagegen::pagegenInit();
}
и в методе main()
вызовите его: $this->initTSFE();
, Затем этот вызов:
$conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_ases_pi1.'];
var_dump($conf);
выведет полный список.
Я не утверждаю, что я действительно понял бы это... но так как это может спасти других, некоторые проблемы, я все равно отправляю их.
[РЕДАКТИРОВАТЬ]
Видимо, это была эта линия:
$GLOBALS['TSFE']->checkAlternativeIdMethods();
это сделало разницу. Удаление этого результата приведет к короткому результату, указанному в вопросе.
В качестве примечания: эти строки:
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->getCompressedTCarray();
TSpagegen::pagegenInit();
для меня не имеет значения, поэтому я предполагаю, что их можно опустить в моем случае, чтобы немного ускорить работу.
Я оставлю их здесь, потому что они могут помочь кому-то еще в будущем.