如何包含基于TYPO3页面布局的JS?

时间:2019-04-03 04:48:43

标签: typo3 typoscript

我正在使用page.includeJSFooter,并且在页面布局设置为特定值时需要添加文件。

我曾尝试使用if,例如:

page.includeJSFooter {
  file1 = myscript.js
  file1.if.isFalse.field = layout
  file1.if.isFalse.value = 103
  file1.if.isFalse.negate = 1
}

我对此进行了一些尝试,但无法使其正常工作?

3 个答案:

答案 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
    } 
}