Clientlibs Qs 如何排除一些js文件

Clientlibs Qs How to exclude some js files

我有类别为 abc 的 clientlibs。它包含多个 js 文件,例如

abc
  |-->JS
  |    |--->a.js
  |    |--->b.js
  |    |--->c.js
  |-->js.txt[which have the paths of all three js files]

如果我使用类似的东西:<cq:includeClientLib js="abc" />。这包括我脚本中的所有 js 文件。但是我怎么能限制只包括两个。这 3 个只是示例,可以有 10 个或更多。有谁知道除了创建新的 clientlib 文件夹之外,这是如何实现的。

谢谢

您可以删除 'js.txt' 中的 js 文件条目,js 将出现在路径中但不会作为 cq:include

的一部分

据我所知,这是不可能的。无论您在 js.txt 中输入什么 js 文件名,当您编写此 <cq:includeClientLib js="abc" /> 在你的 JSP.

中声明

也就是说,如果您只想在另一个 JSP 中包含两个 JS 文件而不创建新的 clientlib,唯一的方法是使用完整路径手动包含。

像这样

<script src="/etc/designs/projectname/clientlibs/js/a.js"></script>
<script src="/etc/designs/projectname/clientlibs/js/b.js"></script>

您可以使用 clientlibs 的主题功能来实现此要求。它需要对 clientlibs 结构进行少量修改。让我用三个 js 文件(a.js、b.js 和 c.js)来解释它。

让我们假设 b.js 不是一直需要的,而 a.js 和 c.js 是。您必须使用 a.js 和 c.js 创建一个父 clientlib。在同一个 clientlib 中创建一个主题文件夹并添加第二个带有 b.js [should have same category as parent] 的 clientlib,结构应如下所示:

clientlibs: {
categories: [
    "themeParent"
],
jcr: primaryType: "cq:ClientLibraryFolder",
js: {
    jcr: primaryType: "nt:folder",
    a.js: {
        jcr: primaryType: "nt:file",
        jcr: content: {}
    },
    c.js: {
        jcr: primaryType: "nt:file",
        jcr: content: {}
    }
},
js.txt: {
    jcr: primaryType: "nt:file",
    jcr: content: {
        //a.js and c.js
    }
},
themes: {
    jcr: primaryType: "nt:folder",
    themeb: {
        categories: [
            "themeParent"
        ],
        jcr: primaryType: "cq:ClientLibraryFolder",
        js.txt: {
            jcr: primaryType: "nt:file",
            jcr: content: {
                //b.js
            }
        },
        b.js: {
            jcr: primaryType: "nt:file",
            jcr: content: {}
        }
    }
}
}

可以使用 includeClientLib 标记的 themed 标志为 clientlib 选择性地启用主题。

<cq:includeClientLib js="themeParent"/> :将包括 a.js 、 c.js 和 b.js

<cq:includeClientLib js="themeParent" themed="false"/> :将包括 a.js 和 c.js

<cq:includeClientLib js="themeParent" themed="true"/> :将只包括 b.js

参考资料:How are themes applied in Adobe AEM?