Вы можете выполнить это требование использования тем функциональность clientlibs. Это потребует нескольких изменений в структуре clientlibs. Позвольте мне объяснить это тремя файлами js (a.js, b.js и c.js).
Предположим, что b.js не требуется все время, когда используются a.js и c.js. Вам нужно будет создать родительский clientlib с a.js и c.js. В то же 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: {}
}
}
}
}
Темы могут быть выборочно включена для clientlib с использованием флага includeClientLib с тегом themed.
<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?
Отличная работа Sharath. Но это помогает в любом случае. Скажите несколько раз, что я хочу комбо a.js и b.js, а иногда и b.js и c.js, тогда этот подход не будет работать правильно? – Oliver
@Oliver, этот уровень модульности не поддерживается.Почему бы не иметь разные категории в таких ситуациях. –