我有类别为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文件夹之外如何实现这一目标。
由于
答案 0 :(得分:2)
您可以使用clientlibs的主题功能来实现此要求。它需要对clientlibs结构进行很少的修改。让我用三个js文件(a.js,b.js和c.js)解释它。
假设a.js和c.js一直不需要b.js。您必须使用a.js和c.js创建父clientlib。在同一个clientlib中创建一个主题文件夹并添加第二个clientlib与b.js [应该与父类具有相同的类别],结构应如下所示:
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
答案 1 :(得分:0)
您可以删除&#39; js.txt&#39;中的js文件条目,js将出现在路径中,但不会作为cq:include
的一部分包含在内答案 2 :(得分:0)
据我所知,这是不可能的。当您在JSP中编写此<cq:includeClientLib js="abc" />
语句时,将包含您在js.txt中输入的任何js文件名。< / p>
所以说如果你想在另一个JSP中只包含两个JS文件而不创建新的clientlib,唯一的方法就是手动使用完整路径。
像这样<script src="/etc/designs/projectname/clientlibs/js/a.js"></script>
<script src="/etc/designs/projectname/clientlibs/js/b.js"></script>