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
,因此失败了。
任何想法或提示表示赞赏!
解决方案
实际上这可能是可能的。但是我看不到如何在页面属性中覆盖所选模板的明显方法。
据我所知,您需要在页面记录中选择一个模板。
如果您发现有可能覆盖那个,您可以使用这样的 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。但我看不到那个选项。
推荐阅读
- python - Tensorflow:如何提高图像预处理速度?
- html - 显示“空”块
- r - 在R中多次执行for循环
- python - Elasticsearch python api GET索引统计
- mysql - Laravel 加入多个条件
- php - Spotify API php - 无法请求数据并获取访问令牌
- javascript - JavaScript 中可以进行函数范围跟踪吗?
- python - 在 pyqt5 gui 中嵌入 matplotlib 图
- asp.net-core - 使所有控制器方法异步
- angular - 在 Angular 6 JIT 中调用 enableProdMode()