我正在使用page.includeJSFooter
,并且在页面布局设置为特定值时需要添加文件。
我曾尝试使用if,例如:
page.includeJSFooter {
file1 = myscript.js
file1.if.isFalse.field = layout
file1.if.isFalse.value = 103
file1.if.isFalse.negate = 1
}
我对此进行了一些尝试,但无法使其正常工作?
答案 0 :(得分:4)
如果您使用后端布局,则下面的代码可能会帮助您
[globalVar = TSFE:page|backend_layout =pagets__seitenleiste]
page.includeJSFooter {
file1 = myscript.js
}
[end]
如果您使用前端布局,则下面的代码将为您提供帮助
[globalVar = TSFE:page|layout =1]
page.includeJSFooter {
file1 = myscript.js
}
[end]
让我知道这是否对您不起作用,我将尝试提出另一种建议!
答案 1 :(得分:3)
您的情况有一些问题:
file1.if.isFalse.field = layout
您测试该字段是否没有值(等于布尔值false,例如0或空字符串)
file1.if.isFalse.value = 103
.isFalse
与任何特定的value
file1.if.isFalse.negate = 1
.negate
应该出现一级,而.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
中的显式给定值具有优先级。
答案 2 :(得分:1)
如果您碰巧使用FLUID进行页面渲染,则还可以在页面模板中添加资产,例如使用此ViewHelper https://fluidtypo3.org/viewhelpers/vhs/master/Asset/ScriptViewHelper.html处理JavaScript资产。
我个人认为此逻辑属于模板而不属于TypoScript,这就是为什么我总是在模板中这样做。我使用了一个自定义的ViewHelper,尽管它以与TypoScript相同的方式将资产添加到pageRenderer中,以便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
}
}