単純なアコーディオンのコンポーネントを作成しようとしています。コンテンツのブロックは見出しの下にあり、見出しは一度に1つしか表示されません。私の好みの実装では、2つのコンポーネント、1つはアコーディオン全体を表し、もう1つはコンポーネントを1つのコンポーネントとして表します。Adobe CQ子コンポーネントを制限するコンポーネント
アイデアは、コンテンツ作成者はその後、アコーディオンに一つ以上のアコーディオンのアイテムをドロップ、相棒からアコーディオンを引くが、任意の他のコンポーネントがここにドロップできるようにすることができないということです。アコーディオンアイテムは、アコーディオンコンポーネントにのみドロップすることができ、他のパーサーにはドロップできません。
私の問題は、現在、アコーディオンに他のコンテンツを追加し、アコーディオンの外にアコーディオンアイテムを追加することが可能であるということです。
これを解決する最初の試みがされた:
foobar/components/accordion
foobar/components/accordion/accordion.jsp
foobar/components/accordion/cq:editConfig
foobar/components/accordion/dialog
foobar/components/accordion/accordionitem
foobar/components/accordion/accordionitem/accordionitem.jsp
foobar/components/accordion/accordionitem/cq:editConfig
foobar/components/accordion/accordionitem/dialog
これらは、このから設定ファイルがあるされています
アコーディオン/ .content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:isContainer="{Boolean}true"
jcr:primaryType="cq:Component"
jcr:title="Accordion"
sling:resourceSuperType="foundation/components/parbase"
allowedChildren="[*/accordion/accordionitem]"
allowedParents="[*/parsys]"
componentGroup="General"/>
アコーディオン/ _cq_editConfig.xml
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:actions="[-,edit,-,delete]"
cq:layout="editbar"
jcr:primaryType="cq:EditConfig">
<cq:listeners
jcr:primaryType="cq:EditListenersConfig"
aftercopy="REFRESH_PAGE"
afterdelete="REFRESH_PAGE"
afterinsert="REFRESH_PAGE"/>
</jcr:root>
ダイアログは空白で、コンポーネントがサイドキックに表示されるようにのみ存在します。
accordion.jspには、基本パースが含まれています。
アコーディオン/ accordionitem/.content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Component"
jcr:title="Accordion Item"
sling:resourceSuperType="foundation/components/parbase"
allowedParents="[*/accordion]"
componentGroup="General"/>
アコーディオン項目ダイアログがタイトルになります。 editConfigは単にツールバーを追加しますが、リスナーは追加しません。
accordionitem.jspは、ダイアログから取得したタイトルを出力し、parsysを持ちます。
私の問題は、parsysがaccordionおよびaccordionitemコンポーネントのルールを使用していないことが原因と思われます。代わりに、上書きされない限り、代わりに次の構文解析から継承するように見えます。
私は、ページ上で編集モードを使用して、適切なコンポーネントを選択することにより、正しくコンポーネントを設定することができますが、それは私がすべてのページテンプレートに同じ設定を行う必要が意味し、テンプレートに対する情報を設定します。私が欲しいのは、それがかつて存在しているように、それは代わりにコンポーネント定義で定義されていることです。 Iが基準として、私が代わりにaccordion.jsp内で使用するparsysの拡張を追加しようとした使用http://jenikya.com/blog/2012/03/cq5-accordion-component.html
:最初の私は正確に同じのscenerio説明このブログを発見コンポーネントを書き込んだ後
。これはコードには何の差もなく、私のカスタムパーツでさえ、アコーデオンアイテム以外のコンポーネントを追加することができました。
取るために何が間違っているか、他の方法のいずれか上の任意のガイダンスは非常に高く評価されます。
取得後にコンポーネントをコンポーネントに追加する方法の詳細については、あなたのmultifieldからの値ですか? –