2017-12-11 11 views
0

ページのパンくずリストとして使用されるカスタムマルチフィールドコンポーネント(「ブレッドクラム」というタイトル)を作成しました。各マルチフィールドアイテムは、テキストフィールドとパスブラウザーで構成されます。テキストとしての "text"プロパティとhrefとしての "link"プロパティを持つアンカータグとして各マルチフィールド項目をリストしたいと思います。各フィールドに複数の値があるときにAEMマルチフィールドコンポーネントをループする方法

今、私はちょうど次のように私のhtmlプロパティを一覧表示があります。

<div> 
    <p>${properties.text}</p> 
    <p>${properties.link}</p> 
</div> 

ページにこれを出力する:

text 1,text 2 

link 1,link 2 

私はデータ-SLY-リストを使用する方法を知っています各プロパティのdata-sly-repeatを使用して、次のようなすべてのテキストとリンクのリストを取得します。

しかし、このようになります一つの要素に両方のプロパティを一覧表示する方法があります:私はまた、カスタムのjsファイルとデータ-SLY-使用を試してみましたが、また、複数取得することはできません

<ul data-sly-repeat.breadcrumbs="${properties}"> 
    <li> 
     <a href="${breadcrumbs.text}"> 
      ${breadcrumbs.link} 
     </a> 
    </li> 
</ul> 

は、プロパティを1つの要素にループします。

答えて

0

フィールドをJSONまたはACS multifieldのようなノードとして格納するマルチフィールドを使用することを強くお勧めします。目的に合わせてより良いデータ構造を得ることができます。 linktextの両方が同じ長さで、正しい順序で使用されることを100%保証していない限り、私は以下の解決策を推奨しません。

<ul data-sly-list.textItem="${properties.text}"> 
    <li> 
     <a data-sly-attribute.href="${properties.link[textItemList.index]}"> 
      ${textItem} 
     </a> 
    </li> 
</ul> 

これが印刷されます:テキストとリンクはここに、それぞれ複数値プロパティと仮定すると、あなたが何ができるかである、と述べた

ul> 
    <li> 
     <a title-href="link1"> 

     </a> 
    </li> 

    <li> 
     <a title-href="link2"> 

     </a> 
    </li> 
</ul> 

data-sly-listためのVAR名いるので、カスタム識別子textItemListが作成されます。私たちは、textItemListのメンバーindexに興味があり、実行してlinkで同じインデックスにある項目を表示するためにそれを使用:properties.link[textItemList.index]

をノート*

data-sly-list in the specについて詳しく読む:あなたも data-sly-repeat

でこれを行うことができます
+0

ありがとうございます!このソリューションは機能しますが、私はACSのマルチレベルも検討します。 "data-sly-attribute.title.href"の使用の意義は何ですか?これは、プロパティを正しく一覧表示しますが、私は同様に、通常の "href"属性が必要です。私はちょうど のhrefを使用する場合= "$ {properties.link [textItemList.index]}" が、それは... –

+0

を何も表示さdoesntの私が使用するように私の答えを編集した: 'データ-SLY-attribute.href'は私が持っていました以前はそれでエラーがありました。今すぐ動作するはずです。これは例えば 'href =" link1 "'を出力します。 –

+0

あなたはどんなエラーを受けていましたか?私はエラーを取得していない、それはちょうどアンカータグが表示されますが、属性なし。他のすべてが正常に動作しているようです –

関連する問題