我有一个多域 TYPO3 CMS 安装,其中每个 X 页面树都有自己的页面模板和使用 FluidTYPO3 构建的内容元素。
目前,后端用户可以看到不同提供程序扩展提供的所有模板和元素。现在的问题是:是否可以通过某些用户定义的条件禁用页面模板和内容元素(如果我们在页面 Y 的子页面上仅显示页面模板 A 和内容元素 B、D 和 F?
马库斯
解决方案是为单独的模板集提供单独的 TS 配置。
请参见以下示例:
your_ext/Configuration/TypoScript/Set1/setup.txt
:
plugin.tx_yourext.view {
templateRootPath = EXT:your_ext/Resources/Private/Set1/Templates/
partialRootPath = EXT:your_ext/Resources/Private/Set1/Partials/
layoutRootPath = EXT:your_ext/Resources/Private/Set1/Layouts/
}
your_ext/Configuration/TypoScript/Set2/setup.txt
:
plugin.tx_yourext.view {
templateRootPath = EXT:your_ext/Resources/Private/Set2/Templates/
partialRootPath = EXT:your_ext/Resources/Private/Set2/Partials/
layoutRootPath = EXT:your_ext/Resources/Private/Set2/Layouts/
}
your_ext/ext_tables.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript/Set1', 'Templates Set1');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript/Set2', 'Templates Set2');
因此,您可以在树中的指定 TS 模板中包含所需的集合。例如,您的结构是:
root
|
|- Home1 (TS Template)
| |
| |- Page 1
| |- Page 2
|- Home2 (TS Template)
|
|- Page 1
|- Page 2
然后,您可以在“Home1”TS 模板中包含“Templates Set1”,但在“Home2”TS 模板中包含“Templates Set2”。
唯一的缺点:您不能在同一页面上同时使用两组。
更多信息在官方手册。
2015 年 3 月 5 日更新:已创建票证来跟踪无法取消设置自定义 CE 的问题,现在这个问题终于解决了。因此,以上面的提交消息为例,可以这样做:
# disable the "Alert" element:
plugin.tx_fluidbootstraptheme.forms.alert.enabled = 0
我为一个项目所做的是根据站点名称生成目录树:
我比创建:
plugin.tx_yourprovidername.settings.sitename = site1
然后我可以在我的模板中使用它:
<f:layout name="{settings.sitename}/nameoflayout"/>
至少有一种方法可以在新内容向导中隐藏元素和选项卡。将此添加到您的页面 tsconfig 并确保将其包含在页面树中(属性 > 资源 > 排版配置):
mod.wizards.newContentElement.wizardItems.common.show =
此行将隐藏新内容向导中的“常用”选项卡。如果您相应地对您的 ce 模板进行分组,您可以控制为给定的页面树显示哪些元素。您还可以使用“:= removeFromList(yourElement1, ...)”隐藏单个元素。
请记住,这仅适用于新内容向导。编辑元素时,您仍然可以从“流动内容类型”下拉列表中选择任何 ce。
我仍在寻找显示和隐藏页面模板以及禁用某些元素的方法。我一找到东西就会尝试更新这个答案:)
干杯...