TYPO3 包括 CSS/JS 取决于页面 UID

TYPO3 includes CSS/JS depending on page UID

我正在尝试根据页面添加一些外部资源(CSS/JS),以便更好地利用资源。 这是我的实际情况:

page = PAGE
page.10 = FLUIDTEMPLATE
page {
    typeNum = 0
    //### GLOBAL CONFIG
    config {
        //some global config
    }
    //### CSS INCLUSION
    includeCSS {
        fontAwesome = fileadmin/assets/lib/fontawesome-5.14.0/css/all.css
        bootstrapCSS = fileadmin/assets/lib/bootstrap-4.5.2-dist/css/bootstrap.min.css
        mainCSS = fileadmin/assets/css/main.css 
    }
    //### HEADER JS INCLUSION
    includeJS {
        jquery = fileadmin/assets/lib/jquery-3.5.1.min.js
    }
    //### FOOTER JS INCLUSION
    includeJSFooter {
        bootstrapJS = fileadmin/assets/lib/bootstrap-4.5.2-dist/js/bootstrap.min.js
        siteMain = fileadmin/assets/js/main.js
    }
    //### TEMPLATING
    10 = FLUIDTEMPLATE
    10 {
        templateName = LayoutTemplate
        templateRootPaths.1 = fileadmin/Templates
        layoutRootPath  = fileadmin/Templates/Layouts
        variables{
            contentNormal < styles.content.get
            contentRight < styles.content.get
            contentRight.select.where = colPos = 2
        }
    }
}

我尝试了这 2 种解决方案:

这次修改了之前的代码:

//### CSS INCLUSION
    includeCSS {
        fontAwesome = fileadmin/assets/lib/fontawesome-5.14.0/css/all.css
        bootstrapCSS = fileadmin/assets/lib/bootstrap-4.5.2-dist/css/bootstrap.min.css
        mainCSS = fileadmin/assets/css/main.css
        //###ADDED FOR NEW INCLUSION###
        [page ["uid"] == 1]
        additionalCSS = fileadmin/assets/css/additional.css
        [END]
        //#############################
    }

并且在前面的页面对象声明之后添加代码:

1.)

[page ["uid"] == 1]
page.10.includeCSS.additionalCSS = fileadmin/assets/css/additional.css
......
[END]

2.)

[page ["uid"] == 1]
page.10.includeCSS{
    additionalCSS = fileadmin/assets/css/additional.css
    .......
}
[END]

他们中的任何一个都不工作,我不知道为什么。

有什么建议吗?

第一个不起作用,因为 TypoScript 中的条件仅适用于最高级别。

所以你不能这样做:

page.includeCSS {
  main = ...
  [page["uid"] == 1]
    additional = ...
  [end]
}

你必须做的:

page.includeCSS {
  main = ...
}
[page["uid"] == 1]
  page.includeCSS.additional = ...
[end]

在第二个中你使用 page.10.includeCSS 而你应该使用 page.includeCSS(没有 10)。

我也不确定该条件是否适用于 page["uid"] 之间的 space。如果不行就改成[page["uid"] == 1].

错字条件很昂贵,页面 ID 可以更改:

看看 EXT:news IncludeFileViewhelper 以获得更明智的方法 - 或者资产收集器,如果你是 运行 TYPO3 10:https://usetypo3.com/asset-collector.html