6

currentDesign.writeCssIncludes(pagecontext);headlibs.jspにある標準呼び出しに含まれる css を正確に把握しようとしています。ドキュメントには、それが

Convenience method that writes the CSS include strings to the response.

それが何をしているように見えるかを見ると/etc/designs/currentdesign.css、デザイン コンポーネント css から構築されたものと/etc/designs/currentdesign/static.css、単なる静的ファイルである が含まれます。しかし、これが含まれるすべてですか?

特に、clientLib で処理された css ファイルを設計の一部として含めたいと考えています。これを行う 1 つの方法は、css インクルードを手動で構築することです。

<link rel="stylesheet" href="<%= currentDesign.getPath() %>/myclientlib.css" />

しかし、私はそれが自動的に生成されるようにしたいと思います。そうすれば、私のデザイナーは、異なるデザインに対して異なる css ファイルを柔軟に構成できます (つまり、「ベース」デザインの場合はstatic.cssファイルだけで問題ありませんが、「ファンシー」デザインの場合)。 LESS css を使用し、ファイルをより細かく分割するように設計します)。そして、それらを分離する必要があるのではなく、影響を受けるコンポーネントにデザイン固有の css 情報を配置すると便利です。

4

2 に答える 2

2

<cq:includeClientLib>タグをテーマやカテゴリと組み合わせて使用​​すると、CSS のビットを組み合わせて一致させることができます。

ただし、多少制限があることに気付くかもしれません。たとえば、メディア属性を指定することはできません。これを行う必要がある場合、またはデザイナーがテーマ/カテゴリ モデルに適合する方法で CSS を構成していない場合、フォールバックは質問で特定した手法を<link>直接使用します。

アップデート

テーマに関する素晴らしい質問です。私はそれらが通りすがりに使用されているのを見ただけです。

/etc/designs/yourproject/clientlibs/themesの兄弟として、 の下に新しいフォルダ/ノードを追加するだけで、テーマを定義できますdefault

<cq:includeClientLibs>おそらくいくつかの条件付きロジックの制御下で、 タグを使用してテーマの clientlibs を取り込むことができます。たとえば、私のプロジェクトの 1 つにauthoring、オーサー インスタンスにのみ適用したいというテーマがあります。私はこのコードでそれを引き出しますheadlibs.jsp:

<c:if test="${ (global['wcmmode']  eq 'EDIT') || (global['wcmmode'] eq 'PREVIEW') }">
    <cq:includeClientLib theme="apps.myproject.authoring" />
</c:if>

テーマをコンテンツ ツリーの特定のサブツリーに自動的に適用したり、タグの存在に基づいたりするドキュメントは見たことがありません。

「テーマ名はリクエストから抽出されます」という不可解なステートメントがあります。Sling docsのこのステートメントによってバックアップされているAdob​​e docsでは、「ThemeResolverFilter Provides the Theme for the request. The theme is provided as a request attribute.」したがって、おそらく&theme=apps.yourproject.fooクエリ文字列に追加すると、そのテーマが適用されます。

于 2013-02-27T20:29:44.837 に答える
0

CSS ファイルのリストは、ページのプロパティ「cq:designPath」に基づいています。

于 2014-01-28T11:11:38.670 に答える