我正在尝试修改/覆盖CQ客户端库管理器的功能,我想知道是否有人熟悉代码所在的位置?
我在DefaultChannelDetector.js和CQClientLibraryManager.js中找到了一些控制通道检测的js,它们似乎只处理通道,而不是依赖或嵌入。这些作为clientlib,etc / clientlibs / foundation / librarymanager.js,我假设可以通过在apps / system / config / com /day.cq.widget.impl.HtmlLibraryManagerImpl.config
因此,对于修改,我需要知道代码的位置。为了覆盖,我假设我将htmllibmanager.clientmanager指向其他东西,但我仍然需要知道如何访问clientlibs的依赖项/ categories / embed属性。
此外,任何有关cq:includeClientLib标记如何工作的低级别见解将不胜感激。 (低级别,与实现它的代码相关)
答案 0 :(得分:2)
绝大多数客户端库功能都在HtmlLibraryManagerImpl
组件中com.day.cq.cq-widgets
类的cq:includeClientLib
类实现的OOB中。您可以在Felix中查找此组件以查看它所在的包,然后在需要查看实现的内容时对该包进行反编译。
在高级别,此组件处理cq:includeClientLib
标记的结果生成以及请求库URL时库的串联和编译。专门针对HtmlLibraryManager
标记,writeIncludes
的{{1}}方法将根据请求的参数和cq:includeClientLib
标记中提供的参数确定如何编写包含到现有库的页面。
对于动态库(基于通道的库),它将编写对库管理器JavaScript机制的调用,该机制将动态地包含基于用户通道的库。否则,将分别为所请求的库及其依赖项编写适用于JavaScript和CSS的脚本和链接标记。