使扩展的常量在常量管理器中可用

Making the constants of a Extension available in constant manager

我有一个有效的 Extbase 扩展,它向前端显示一个表单,这取决于将它放在页面上时在后端选择的选项。

我为这些选项使用了 Flexform(主要是表单操作,还有一些字段)。

一切正常,除了常量。 因为这个表单模板可能会根据使用它的不同网站而改变,我希望能够改变模板根路径,这样我就可以定义自定义模板。

我在 form_plugin/Configuration/TypoScript

中有一个 constants.txt 和一个 setup.txt

常量如下所示:

plugin.tx_nlmymail_newsletter {
    view {
        # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template root (FE)
        templateRootPath = EXT:nl_mymail/Resources/Private/Templates/
        # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template partials (FE)
        partialRootPath = EXT:nl_mymail/Resources/Private/Partials/
        # cat=plugin.tx_nlmymail_newsletter/file; type=string; label=Path to template layouts (FE)
        layoutRootPath = EXT:nl_mymail/Resources/Private/Layouts/
    }
    persistence {
        # cat=plugin.tx_nlmymail_newsletter//a; type=string; label=Default storage PID
        storagePid =
    }
}

我的 setup.txt 看起来像这样:

plugin.tx_nlmymail_newsletter {
    view {
        templateRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.templateRootPath}
        partialRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.partialRootPath}
        layoutRootPaths.0 = {$plugin.tx_nlmymail_newsletter.view.layoutRootPath}
    }
    persistence {
        storagePid = {$plugin.tx_nlmymail_newsletter.persistence.storagePid}
    }
}

所以根据this,这应该足够了。 也许我在这里遗漏了一块。

在我的 ext_tables.php 我使用

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'mail connection');

包括 Typoscript。

我需要为常量创建自定义类别吗?

我比较了bootstrap_package插件,但我似乎找不到关键的区别。

如果有人能给我指出正确的方向,也许是我遗漏的部分文档,我将不胜感激。

从评论中复制:

问题是静态模板没有包含在模板中。

这是截图:

是否可以自动执行此操作?

是的,它只是基于字符串的函数,而不是文件。

您必须在 ext_localconf.php 中使用以下命令:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup

来自 felogin 系统扩展的示例:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('TYPO3.CMS.Felogin', 'constants', '
styles.content.loginform {
    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the folder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
  pid =
    # cat=content/cLogin; type=; label= Login template: Enter the path for the HTML template to be used
  templateFile = EXT:felogin/Resources/Private/Templates/FrontendLogin.html
}
', 'defaultContentRendering');

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('TYPO3.CMS.Felogin', 'setup', '
# Setting "felogin" plugin TypoScript
tt_content.login = COA
tt_content.login {
    10 =< lib.stdheader
    20 >
    20 =< plugin.tx_felogin_pi1
}
', 'defaultContentRendering');

最后:

建议使用静态模板,因为您可能有不同的树和设置。大多数 TER 扩展也使用这种方法。