我正在使用page.includeJSFooter
并且需要在页面布局设置为特定值时添加文件。
我尝试过使用if if this:
page.includeJSFooter {
file1 = myscript.js
file1.if.isFalse.field = layout
file1.if.isFalse.value = 103
file1.if.isFalse.negate = 1
}
我尝试了一些变化,但无法让它工作?
你的病情有一些问题:
file1.if.isFalse.field = layout
你测试字段是否没有值(等于布尔值false,如0或空字符串)
file1.if.isFalse.value = 103
.isFalse
与任何特定的value
都没有比较
file1.if.isFalse.negate = 1
.negate
sh可能出现一个级别更高,而.isFalse
的否定将是.isTrue
你需要的是与平等相比。 这将是一个简单的解决方案,如下所示:
page.includeJSFooter {
file1 = myscript.js
file1.if.equals = 103
file1.if.value.field = layout
}
如果您使用字段backend_layout
,您可能还使用字段backend_layout_next_level
,它可能为下面的页面设置值。
然后你的TS看起来像:
page.includeJSFooter {
file1 = myscript.js
file1.if {
equals {
data = levelfield:-1,backend_layout_next_level,slide
override.field = backend_layout
}
value = pagets__speciallayout
}
}
试图从继承字段backend_layout_next_level
获取布局,但字段backend_layout
中的显式给定值具有优先权。
如果您使用后端布局,那么下面的代码可以帮助您
[globalVar = TSFE:page|backend_layout =pagets__seitenleiste]
page.includeJSFooter {
file1 = myscript.js
}
[end]
如果您使用前端布局,那么下面的代码将帮助您
[globalVar = TSFE:page|layout =1]
page.includeJSFooter {
file1 = myscript.js
}
[end]
让我知道,如果这不适合你,我会尝试建议另一种方式!
如果您碰巧使用FLUID进行页面呈现,您还可以通过f.e从页面模板中添加资源。将此ViewHelper https://fluidtypo3.org/viewhelpers/vhs/master/Asset/ScriptViewHelper.html用于JavaScript资产。
我个人认为这个逻辑属于模板而不属于TypoScript,这就是为什么我总是在我的模板中做到这一点。我使用自定义ViewHelper虽然将资源添加到pageRenderer,就像TypoScript一样,所以PageRenderer的所有压缩,合并和其他逻辑都适用于它们(不像VHS viewHelper那样做它自己的东西)。
如果您更喜欢TypoScript方式,我会选择Bernd Wilke建议的if条件
编辑:遗憾的是,Bernds示例中的if条件不正确,请尝试
page.includeJSFooter {
file1 = myscript.js
file1.if.value.field = layout
file1.if.equals = 103
}
和
page.includeJSFooter {
file1 = myscript.js
file1.if {
value {
data = levelfield:-1,backend_layout_next_level,slide
override.field = backend_layout
}
equals = pagets__speciallayout
}
}