我的扩展程序中的ext_conf_template.txt
中有一些设置。
我想检查其中一个设置的值,但是在typoscript
中,而不是在PHP中。
在PHP中它的工作原理如下:
unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['myExt'])
我应该如何在typoscript中执行此操作?
答案 0 :(得分:2)
我在我的代码段扩展中做了类似的事情(请参阅完整的code on Github),其中我刚添加了一个自定义的TypoScript条件:
[DanielGoerz\FsCodeSnippet\Configuration\TypoScript\ConditionMatching\AllLanguagesCondition]
// some conditional TS
[global]
条件实现非常简单:
namespace DanielGoerz\FsCodeSnippet\Configuration\TypoScript\ConditionMatching;
use DanielGoerz\FsCodeSnippet\Utility\FsCodeSnippetConfigurationUtility;
use TYPO3\CMS\Core\Configuration\TypoScript\ConditionMatching\AbstractCondition;
class AllLanguagesCondition extends AbstractCondition
{
/**
* Check whether allLanguages is enabled
* @param array $conditionParameters
* @return bool
*/
public function matchCondition(array $conditionParameters)
{
return FsCodeSnippetConfigurationUtility::isAllLanguagesEnabled();
}
}
实际TYPO3_CONF_VARS
值的检查是在FsCodeSnippetConfigurationUtility
:
namespace DanielGoerz\FsCodeSnippet\Utility;
class FsCodeSnippetConfigurationUtility
{
/**
* @return array
*/
private static function getExtensionConfiguration()
{
return unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['fs_code_snippet']);
}
/**
* @return bool
*/
public static function isAllLanguagesEnabled()
{
$conf = self::getExtensionConfiguration();
return !empty($conf['enableAllLanguages']);
}
}
也许这符合您的需求。
答案 1 :(得分:2)
通过Extension Manager处理配置,并在ExtensionManagementUtility::addTypoScriptConstants()
中调用ext_localconf.php
以在运行时设置TypoScript常量。
这样可以在一个位置设置该值,并且可以在低级PHP和TypoScript设置中使用。
答案 2 :(得分:1)
多亏了Marcus的回答,我才能够将扩展配置设置添加到输入中。首先在ext_conf_template.txt
中创建扩展名设置:
# cat=Storage; type=string; label=storageFolderPid
storageFolderPid = 1
在ext_local_conf.php
中添加以下行:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants(
"plugin.tx_extensionname.settings.storageFolderPid = ".$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['extension']['storageFolderPid']
);
然后,您可以在错别字中使用此variabele,例如,创建存储文件夹的子菜单:
lib.submenu = CONTENT
lib.submenu {
table = tx_extension_domain_model_article
select {
pidInList = {$plugin.tx_extensionname.settings.storageFolderPid}
selectFields = tx_extensionname_domain_model_article.*
}
...
}