5

Adobe AEM (以前の Adob​​e CQ) のクライアント ライブラリ (ClientLib) 機能を使用すると、クライアント ライブラリをカテゴリ別に簡単に含めることができ、各ライブラリは依存関係を通じて他のライブラリを取り込むことができます。ただし、「テーマ」に関するドキュメントは少し薄いです。

このリンクは、この件に関して私が見つけることができるすべてです。サンプル コードの抜粋を次に示します。

<%-- theme only (theme-js + css) --%>
<cq:includeClientLib theme="cq.collab.calendar, cq.security" />

このタグが使用された場合、CQ はどのクライアント ライブラリをプルするかをどのように決定しますか? タイプ String[] のテーマ プロパティを探しますか?

または、/etc/designs セクションで特定のディレクトリ構造を探しますか?

それとも、渡されたカテゴリを取得して、最後に theme-js を追加しますか?

cq.collab.calendar.theme-js

または、テーマは URL から呼び出されますか? つまり、この場合の「テーマ」という言葉は、テーマを適用した URL からのセレクターに置き換えられるトークンですか?

4

3 に答える 3

8

クライアント ライブラリは cq:ClientLibraryFolder フォルダーにあります。このフォルダーには、カテゴリと呼ばれるプロパティがあります。次の例では、cq.collab.calendar と cq.security がカテゴリです。

<cq:includeClientLib theme="cq.collab.calendar, cq.security" />

このインクルードが呼び出されると、カテゴリ cq.collab.calendar または cq.security が割り当てられた cq:ClientLibraryFolder が検索されます。 theme プロパティを使用すると、親 ClientLibraryFolder のテーマ フォルダにある clientLib の css と javascript の両方が追加されます。 ページのソースを表示すると、これらは独自の css および js ファイルに追加されます。たとえば、geometrixx clientLibary の下に次の構造を作成しました。

geometrixx
    clientlibs
        themes
            myTheme (clientLibray)
               css.txt
               myCSS.css
               js.txt
               myJS.js

この clientlib で theme プロパティを使用すると、ソース/ネットワーク タブに myTheme.css および myTheme.js ファイルが表示されます。

テーマフラグは、テーマの包含をオンまたはオフにする方法です。次の cq:include は、テーマ ディレクトリ内のものを含め、clientLibrary 内のすべての css を含めます。

<cq:includeClientLib css="apps.geometrixx-main" />

ただし、themed フラグを追加して false に設定すると、テーマ ディレクトリの下にあるものはすべて除外されます。

<cq:includeClientLib css="apps.geometrixx-main" themed="false" />

その場合、myTheme.css は表示されません。注意すべきことの 1 つは、themed フラグは「純粋な css と js が含まれる」カテゴリでのみ機能し、テーマ プロパティはこれでは機能しないということです。

この質問への答えはこれを少し超えています: currentDesign.writeCssincludes には正確に何が含まれていますか?

于 2013-07-15T16:25:06.030 に答える