如何使用fluidpages动态选择模板

时间:2018-05-07 13:19:36

标签: typo3

我使用fluidpages进行模板构建,并希望根据fe_users表中的字段动态选择模板。例如,大多数人默认会看到EXT:default模板,而有些会看到EXT:advanced模板,因为它们被标记为特殊。

我试过

plugin.tx_template {
    view {
        templateRootPaths {
            0 = EXT:default/Resources/Private/Templates/
            10 {
                data = TSFE:fe_user|user|template
                wrap = EXT: | /Resources/Private/Templates/
            }
        }
    }
}

但似乎TS未被解析并由fluid直接使用,因此失败。

感谢任何想法或提示!

1 个答案:

答案 0 :(得分:1)

实际上这可能是可能的。但我无法看到如何在页面属性中覆盖所选模板的明显方法。

据我所知,您需要在页面记录中选择一个模板。

如果您发现可以覆盖那个,可以像这样使用TS设置:

EXT:template_package /配置/的TypoScript / constants.txt:

plugin.tx_templatepackage {
    view {
        templateRootPaths.default = EXT:template_package/Resources/Private/Templates/
        partialRootPaths.default = EXT:template_package/Resources/Private/Partials/
        layoutRootPaths.default = EXT:template_package/Resources/Private/Layouts/
    }
}

EXT:template_package /配置/的TypoScript / SETUP.TXT:

plugin.tx_templatepackage {
    view {
        templateRootPaths.default = {$plugin.tx_templatepackage.view.templateRootPaths.default}
        partialRootPaths.default = {$plugin.tx_templatepackage.view.partialRootPaths.default}
        layoutRootPaths.default = {$plugin.tx_templatepackage.view.layoutRootPaths.default}
    }
}

以上部分将设置您的全局路径。 之后,您将为模板定义子包。

EXT:template_package /配置/的TypoScript /基本/ SETUP.TXT

plugin.tx_templatepackage {
    view {
        templateRootPaths.10 = {$plugin.tx_templatepackage.view.templateRootPaths.0}Basic/
        partialRootPaths.10 = {$plugin.tx_templatepackage.view.partialRootPaths.0}Basic/
        layoutRootPaths.10 = {$plugin.tx_templatepackage.view.layoutRootPaths.0}Basic/
    }
}

EXT:template_package /配置/的TypoScript /高级/ SETUP.TXT

plugin.tx_templatepackage {
    view {
        templateRootPaths.20 = {$plugin.tx_templatepackage.view.templateRootPaths.0}Advanced/
        partialRootPaths.20 = {$plugin.tx_templatepackage.view.partialRootPaths.0}Advanced/
        layoutRootPaths.20 = {$plugin.tx_templatepackage.view.layoutRootPaths.0}Advanced/
    }
}

当然你应该在TYPO3中提供它们:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'Template Package: Base');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript/Basic', 'Template Package: Basic');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript/Advanced', 'Template Package: Advanced');

在完成所有这些之后,您可以覆盖一个值 - IDK,其中一个 - 通过:

[usergroup = group1-uid]
// override option, which defines the default template
[usergroup = group2-uid]
// override option, which defines the default template

抱歉,我无法帮助您。我试图深入研究EXT:flux和EXT:fluidpages。但我无法看到这个选项。