如何访问typoscript中的ext_conf_template.txt(扩展配置)?

时间:2017-04-21 08:33:15

标签: typo3 typoscript extbase

我的扩展程序中的ext_conf_template.txt中有一些设置。

我想检查其中一个设置的值,但是在typoscript中,而不是在PHP中。

在PHP中它的工作原理如下:

unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['myExt'])

我应该如何在typoscript中执行此操作?

3 个答案:

答案 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.*
    }
    ...
}