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 に答える