Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 防止打印脚本层叠?_Typo3_Typoscript - Fatal编程技术网

Typo3 防止打印脚本层叠?

Typo3 防止打印脚本层叠?,typo3,typoscript,Typo3,Typoscript,我几乎在每个项目中都有这样的功能:默认情况下,打字脚本级联到页面树中的子节点。如果要防止将其应用于子节点,一种解决方案是创建一个额外的TS模板来撤消它,并将其作为“下一级模板”包含 例如,您希望将某些TS应用于特定的父页面,但不应用于其子页面: temp.somemenu.wrap = **|** 除了“下一级模板”方法外,解决方案/黑客包括: 如果您知道从哪个级别开始: [treeLevel = 2] temp.somemenu.wrap = **|** [global] 如果您有pi

我几乎在每个项目中都有这样的功能:默认情况下,打字脚本级联到页面树中的子节点。如果要防止将其应用于子节点,一种解决方案是创建一个额外的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">
这意味着TS有点自我意识,知道它被设置在哪个树级别。不确定这是否可能

这有意义吗


或者我缺少了一些现有的解决方案?

不,除了您在问题中已经提到的解决方案之外,这没有任何其他办法。这样做的原因是,TYPO3从一个页面开始,然后向上查看页面树,直到找到一个
TypoScript
模板。(它收集途中的所有扩展模板,并将它们应用于第一个找到的根模板之上)


因此,它从不下降,只上升。如果它在某个级别后停止级联,那么这些站点应该使用什么作为
TypoScript
模板?它仍然需要一个配置来呈现页面。

这个问题是理论性的,@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]
//仅适用于页面引用
[第|页uid={$pidReferencesList}]
//添加一些额外的js(列表过滤器)
page.includeJSFooter{
refs={$templatePath}/Resources/Public/additional_js/references.js
}
//添加一些标记
lib.thecontent.wrap=|
[全球]

你能描述一下你在说什么吗?
temp.somemenu
是什么菜单类型?您想在那里包装什么?第一:您应该使用
[page | uid=80]
而不是
[globalVar=TSFE:id=80]
。第二:您可以在(设置)条件中使用TS常量,使其更加灵活:
[page | uid={$pid.special}]
。不要忘记:您还可以在条件
[page | uid={$pid.special},{$pid.main}]
中使用多个值。但正如迪米特里所问:你想要实现什么?也许还有另一个解决方案。这太完美了!无论如何,我一直在用常量处理PID。我不知道你可以在恶劣的环境下使用它们。关于“为什么”:这个问题也是理论性的,你的解决方案对我来说已经足够了。尽管如此,我还是会发布我的用例,见答案
// 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]