【问题标题】:How to access the ext_conf_template.txt (extension configuration) in typoscript?如何访问打字稿中的 ext_conf_template.txt(扩展配置)?
【发布时间】:2017-04-21 08:33:14
【问题描述】:

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

我想检查这些设置之一的值,但在 typoscript 中,而不是在 PHP 中。

在 PHP 中它是这样工作的:

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

我应该如何在打字稿中做到这一点?

【问题讨论】:

    标签: typo3 typoscript extbase


    【解决方案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']
    );
    

    然后你可以在你的打字稿中使用这个变量,例如创建一个存储文件夹的子菜单:

    lib.submenu = CONTENT
    lib.submenu {
        table = tx_extension_domain_model_article
        select {
            pidInList = {$plugin.tx_extensionname.settings.storageFolderPid}
            selectFields = tx_extensionname_domain_model_article.*
        }
        ...
    }
    

    【讨论】:

    • 谢谢,正是我需要的,虽然文件名为 ext_localconf.php(一个下划线)。
    【解决方案2】:

    我在我的代码 sn-p 扩展中做了类似的事情(参见完整的 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();
        }
    }
    

    FsCodeSnippetConfigurationUtility 中检查实际的TYPO3_CONF_VARS 值:

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

    也许这符合您的需求。

    【讨论】:

    • 谢谢,这行得通。对于打字设置的简单检查来说,必须创建一个扩展似乎很多。
    【解决方案3】:

    通过 Extension Manager 处理配置并在您的 ext_localconf.php 中调用 ExtensionManagementUtility::addTypoScriptConstants() 以在运行时设置 TypoScript 常量。

    这样可以在一个位置设置值,并且在低级 PHP 和 TypoScript 设置中都可用。

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 2020-11-18
      • 2019-09-18
      • 2021-06-18
      • 2016-07-04
      • 1970-01-01
      • 2015-09-06
      • 2021-08-10
      • 2019-05-04
      相关资源
      最近更新 更多