7

次のように、DWT テンプレート ビルディング ブロック (TBB) の配列をループまたは反復処理できることを理解しています。

<!-- TemplateBeginRepeat name="array_name" -->
    <!-- template logic -->
<!-- TemplateEndRepeat -->

ドキュメントには、定義済みのパッケージ アイテムとその使用方法が記載されています

要約すると、次を使用できます。

  • Componentコンポーネントまたはコンポーネント プレゼンテーションを反復するときに現在のコンポーネントを参照する
  • ComponentTemplateコンポーネント プレゼンテーションを反復処理するときに現在のコンポーネント テンプレートを参照する (これはページ レベルになります)
  • Fieldフィールドと複数値フィールドを反復処理するときに現在のフィールドを参照します。
  • FieldPath繰り返しアイテムへのフルパスを取得します。The Tridion Practice CookbookTemplateRepeatIndexに見られるように、ネストされたループ内で使用する場合に便利です。
  • TemplateRepeatIndex、ゼロベースのループカウント。

コンポーネント配列ループ内の特定のコンポーネントでネストされたループを実行したり、複数値フィールドを反復するときに特定のフィールド名を条件付きでチェックしたりできます。Fields

私は、DWT の構文をネストすることによる二重ルックアップを見てきました (たとえば@@Image_${TemplateRepeatIndex}@@ 、Yet Another Tridion ブログ で説明されているように)。

質問

確かに、これらは複合テンプレートのアイテムまたは配列/コレクションPackageですよね (デフォルトでそこにあるか、コードによって配置されています)?

パッケージ内の個別のアイテムを「反復」することはできますか?

たとえば、 に個々のコンポーネントがある場合、 のPackageようなものでそれらを「反復」でき@@Component${TemplateRepeatIndex}@@ますか?

  • コンポーネント1
  • コンポーネント 2
  • コンポーネント3

loop 内でそのようなアイテムを参照できることがわかりましたが、私が見たすべてのことは、次のことは不可能であることを示唆しています:

<!-- TemplateBeginRepeat name="@@Component${TemplateRepeatIndex}@@" -->
    <!-- do something with @@Component${TemplateRepeatIndex}@@ -->
<!-- TemplateEndRepeat -->
4

2 に答える 2

5

基本的に、DWT テンプレートを使用すると、配列を反復処理できます。パッケージには、自分自身をプッシュできる 1 種類の配列しかありません。これは、コンポーネント プレゼンテーション配列です (コンポーネント テンプレート TCMURI を含むことができますが、コンポーネント TCMURI のみを含むこともできます)。

これにより、パッケージ内のダミー コンポーネント配列をプッシュ (私はこれと呼んでいます) することができます。これを使用してループ オーバーし、次にダブル ルックアップ機能を使用して、一連のパッケージ変数をループするように機能させることができます。

たとえば、3 つのダミー TCMURI を持つコンポーネント配列をパッケージにプッシュします (それらはすべて tcm:0-0-0 であり、値が何であるかは関係ありません)。次に、Var_0、Var_1、Var_2 という名前の 3 つのパッケージ変数を作成します。DWT テンプレートで以下を使用できます。

<!-- TemplateBeginRepeat name="MyDummyArray" -->
  @@Var_${TemplateRepeatIndex}@@
<!-- TemplateEndRepeat -->

これにより、3 つのパッケージ変数の値が得られます。

残念ながら、文字列配列を直接作成したり、フィールド配列を作成したりする方法はありません。そのため、ループしたいものすべてに対して、既存のフィールド配列を使用するか、「ダミー コンポーネント配列」を作成する必要があります。

そこから、あなたの例は書かれているようには不可能であると結論付けることができますが、パッケージにもダミー配列をプッシュすると、それをループして必要なものを得ることができます。

于 2012-12-19T09:06:39.837 に答える
0

tcm:0-0-0 でダミー コンポーネント配列を作成できません。アイテムが存在しないと表示されます。配列を DWT でループできるように、パッケージを介してダミー配列を渡す可能性は他にありますか。

于 2016-02-08T08:49:38.400 に答える