2

我正在尝试修改/覆盖 CQ 客户端库管理器的功能,我想知道是否有人熟悉代码所在的位置?

我在 DefaultChannelDetector.js 和 CQClientLibraryManager.js 中发现了一些控制通道检测的 js,它们似乎只处理通道,而不是依赖项或嵌入。这些作为clientlib,etc/clientlibs/foundation/librarymanager.js,我假设可以通过在apps/system/config/com.day.cq.widget.impl.HtmlLibraryManagerImpl.config中指向htmllibmanager.clientmanager来覆盖

所以为了修改,我需要知道代码在哪里。对于覆盖,我假设我将 htmllibmanager.clientmanager 指向其他东西,但我仍然需要知道如何访问 clientlibs 的依赖项/类别/嵌入属性。

此外,任何对 cq:includeClientLib 标签如何工作的低级洞察力都将不胜感激。(低级,指向实现它的代码)

4

1 回答 1

2

绝大多数客户端库功能都在包中的类HtmlLibraryManager实现 OOB 的组件中。您可以在 Felix 中查找此组件以查看它所在的包,然后如果您需要查看实现的内容,则反编译该包。 HtmlLibraryManagerImplcom.day.cq.cq-widgets

在较高级别上,该组件在cq:includeClientLib请求库 URL 时处理标记结果的生成以及库的连接和编译。具体到cq:includeClientLib标签,HtmlLibraryManagerwriteIncludes方法将根据请求的参数和cq:includeClientLib标签中提供的参数来确定如何将包含写入现有库的页面。

在动态库(基于频道的库)的情况下,它将调用库管理器 JavaScript 机制,该机制将动态地包含基于用户频道的库。否则,将为请求的库及其依赖项分别编写 JavaScript 和 CSS 的适当脚本和链接标签。

于 2013-09-26T21:07:56.717 回答