首页 > 解决方案 > 如何使用流体页面动态选择模板

问题描述

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,因此失败了。

任何想法或提示表示赞赏!

标签: typo3

解决方案


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

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

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

EXT:template_package/Configuration/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/Configuration/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/Configuration/TypoScript/Basic/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/Configuration/TypoScript/Advanced/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 which one:

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

对不起,我不能再帮你了。我试图深入挖掘 EXT:flux 和 EXT:fluidpages。但我看不到那个选项。


推荐阅读