0

背景: レスポンシブ Web サイトの左側にスライド ナビゲーション コンポーネントを作成しようとしています。メニューのすべての項目の横に、design_dialog を使用して構成された画像を含めたいと考えています。

CQ 5.6.1 を実行しています

私が直面している問題は、現在「ホームページ」、「コンテンツページ」、および「連絡先ページ」のテンプレートがあることです。3 つすべてが、基本の「ページ」コンポーネントから派生した同名のコンポーネントでレンダリングされています。

このページ コンポーネントには、navpanel コンポーネントを含む body.jsp があります。すべて正常に動作しますが、ホームページでナビゲーション パネルに画像を設定すると、他の 2 つには表示されません。

この理由は、navpanel の設計パスが次のとおりであるためです。/etc/designs/testsite/jcr:content/homepage/navpanel

ではbody.jsp、navpanel をインクルードするときに、cq:include のパス変数を絶対パス (つまり/etc/designs/testsite/jcr:content/navpanel) に設定しようとしました。これは、API によると絶対パスを使用し、まったく変更しない必要があるためです。代わりに、出力時currentStyle.getPath()に最初のパス (ホームページを含む) を表示し続けます。

私の目標を達成するには、このコンポーネントのデザイン パスを「グローバル」レベルに設定し、テンプレート デザイン内にネストしないようにする必要があります。

この値をプログラムで変更する方法はありますか? cq:include path意図したとおりに動作しないというバグがあるように聞こえますか?

4

2 に答える 2

0

少し遅れましたが、コンポーネントをグローバル (オーサブル コンポーネント) にした方法を共有したいと思いました。

絶対パスの使用はまったく機能しませんでした (まあ、ほとんど)。複数のページでグローバル コンポーネントを共有するために、パス プロパティを次のように処理しました。

メニュー コンポーネントを共有する 10 ページがあるとします。

  1. それらすべてをデフォルトのページ コンポーネントから拡張します。
  2. 1 つのページのみを作成して (myapp/components/pages/A と呼びます)、ページを拡張し、含める共有コンポーネントへの相対パス (つまり: <cq:include path="mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />) を指定します。
  3. 残りのページを作成してページを拡張し、共有コンポーネントへの絶対パス (つまり: <cq:include path="/myapp/A/jcr:content/mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />) を使用します。

このメソッドは、CQ の下のグローバル コンポーネントを複数のテンプレート ページ間で共有するために使用できます。また、EDIT モードで作業する場合は、ドラッグ アンド ドロップ機能もサポートします。任意の子を共有コンポーネントにドラッグし、そのコンポーネントをすべてのページで使用できるようにします。

于 2017-01-02T18:17:50.310 に答える
0

cq:include は、コンポーネントとしてデザイン パスに読み込まれるようには作成されていません (これは、あなたがやろうとしているように聞こえます)。

cq:include は、(script プロパティを使用して) 静的スクリプトを含めるように作成されました。

またはコンポーネント (path と resourceType プロパティを使用) 例:

currentStyle は、現在のテンプレートの designPath に対してこのコンポーネントのスタイルを取得します。

たとえば、geometrixx デモ サイトで、ロゴ (デザイン モード) を別のものに切り替えて、次に別のテンプレートに移動すると、同じことがわかります。古いロゴは、他のテンプレートを使用しているページに残ります。そのため、デザイン モードで使用しているテンプレートにアクションを限定するつもりがない限り、デザイン モードで行うことはできるだけ少なくすることをお勧めします。たとえば、特定のテンプレートで使用できるコンポーネントを制限することは、デザイン モードの優れた使い方です。

ソースと同じデータを使用する「グローバル」コンポーネントを作成するのは、それほど簡単ではありません。あなたの場合、リポジトリ内の共通の場所との間で画像を保存/ロードすることで、この問題を解決することができます。おそらく、この「共通の場所」を構成可能にするサービスを実装することもできます。または、さらに進んで、サービスに画像をロード/保存させることもできます。

于 2013-08-02T14:54:37.697 に答える