使常量管理器

时间:2016-06-09 13:48:01

标签: typo3 typoscript extbase

我有一个工作的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插件进行了比较,但我似乎无法找到关键的区别。

如果有人能指出我正确的方向,也许是我缺少的文件的一部分,我将非常感激。

1 个答案:

答案 0 :(得分:3)

从评论中复制:

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

以下是截图:

enter image description here

自动这样做是否可行?

是的,它只是基于字符串的功能,而不是文件。

您必须在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扩展也使用此方法。