如何在TYPO3页面布局中包含JS?

问题描述 投票:1回答:3

我正在使用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
}

我尝试了一些变化,但无法让它工作?

typo3 typoscript
3个回答
3
投票

你的病情有一些问题:

file1.if.isFalse.field = layout

你测试字段是否没有值(等于布尔值false,如0或空字符串)

file1.if.isFalse.value = 103

.isFalse与任何特定的value都没有比较

file1.if.isFalse.negate = 1

.negatesh可能出现一个级别更高,而.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中的显式给定值具有优先权。


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
投票

如果您碰巧使用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
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.