我在几乎每个项目中都有这种情况:默认情况下,TypoScript会向页面树中的子节点级联。如果您想防止它应用于子节点,一种解决方案是创建一个额外的TS模板来撤消它,并将它作为“下一级的模板”来包含。
例如,您希望将一些TS应用于特定的父页面,但不希望应用于子程序:
temp.somemenu.wrap = **|**除“下一级模板”方法外,解决方案/黑客还包括:
如果您知道您从哪个级别开始:
[treeLevel = 2]
temp.somemenu.wrap = **|**
[global]如果您有pid,并希望将其连接到一个常数中:
[page|uid = {$targetPagePid}]
temp.somemenu.wrap = **|**
[global]编辑:适应常量-这是一个相当健壮的解决方案!
难道没有一些开关来使TS设置不级联吗?或者定义它可以级联到的级别的数量?
有点像
<INCLUDE_TYPOSCRIPT: source="path/to/my.ts" treeLevelsDown="0">或
[global treeLevelsDown = 0]
temp.somemenu.wrap = **|**
[global]这意味着TS是某种自我感知的,知道它是在哪个树级别上设置的。不确定这是否可能。
说得通吗?
还是我错过了一些现有的解决方案?
发布于 2016-11-10 23:52:58
不,除了你在问题中已经提到的那些方法之外,这没有任何其他的作用。原因是,TYPO3从一个页面开始,向上看页面树,直到它找到一个TypoScript模板。(它在途中收集所有扩展模板,并将它们应用于第一个找到的根模板之上)。
因此,它永远不会下降,而只会上升。如果它在某个级别之后停止级联,那么应该使用什么作为这些站点的TypoScript模板?它仍然需要一个配置来呈现页面。
发布于 2016-11-11 08:01:24
这个问题是理论性的,@pgampe回答了这个问题。
关于我的用例,下面是@bernd-wilke-πφ的解决方案,它工作得很好
// just apply to page references
[page|uid = {$pidReferencesList}]
// add some additional js (a list filter)
page.includeJSFooter {
refs = {$templatePath}/Resources/Public/additional_js/references.js
}
// add some markup
lib.thecontent.wrap = <div id="items-list-wrapper">|</div>
[global]https://stackoverflow.com/questions/40528532
复制相似问题