6

メタデータ設計に「リスト」というフィールドがあり、カテゴリとキーワードを使用して入力されるコンポーネントが tridion にあります。

My DWT TBB を使用して次のコードを使用して、リストに存在するアイテムを設定するために DWT コードを使用しました

<!-- TemplateBeginRepeat name="Metadata.list" -->

    <!-- TemplateBeginIf cond="list" --> 
        @@RenderComponentField('list',TemplateRepeatIndex)@@ ,
    <!-- TemplateEndIf -->

<!-- TemplateEndRepeat -->

しかし、私はプレビューを取得しています

一、二、三、四、五、

望ましい出力は次のようになります: one,two,three,four,five

そのため、「TemplateRepeatIndex」の最大数を取得する必要があります。同じことを確認する組み込み関数はありますか。

Tridion-sp1,2011 を使用。

4

4 に答える 4

9

これは、組み込み関数 CollectionLength で解決できます。

複数値のテキスト フィールド「multiValuedField」がある場合、次の式を使用して項目数を見つけることができます。

@@CollectionLength("Component.Fields.multiValuedField")@@

Collection Length は、アイテムの完全修飾名である式と、パッケージ アイテムの値セレクターを受け取ります。

返される値は文字列です。整数の比較または計算を実行する必要がある場合は、値を整数に解析する必要があります。

@@parseInt(${CollectionLength("multivalued")})@@

@@ と ${} の間の文字列が JScript として解析されるため、これが機能します。

于 2012-08-21T12:24:59.683 に答える
6

簡単な解決策は、ロジックを切り替えることです。

TemplateRepeatIndex が 0 かどうかを確認できます。そうでない場合は、値のにカンマを出力します。

于 2012-08-21T10:42:00.403 に答える
2

I believe the only way to do this would be to create a TBB that adds the field count as an item in the package. You would then be able to do the following:

<!-- TemplateBeginRepeat name="Metadata.primary_topic" -->

<!-- TemplateBeginIf cond="primary_topic" --> 
@@RenderComponentField('primary_topic',TemplateRepeatIndex)@@<!-- TemplateBeginIf cond="TemplateRepeatIndex &lt; PrimaryTopicCount"--> ,<!-- TemplateEndIf -->
<!-- TemplateEndIf -->

<!-- TemplateEndRepeat -->
于 2012-08-21T09:54:24.893 に答える
2

Walter は、カスタム関数を導入することで、数年前にこのトピックを解決し、説明しました。

http://sdltridionworld.com/community/extension_overview/dreamweavercia.aspx

現在のバージョンの Tridion 用に彼のコードを再コンパイルすることを忘れないでください。

更新: Tridion が DWT で使用するために持っているすべての組み込み関数 (およびその使用例) は、次のページで見つけることができます: http://code.google.com/p/tridion-practice/wiki/BuiltInFunctionsForUseInHtmlTemplates

于 2012-08-21T11:21:04.643 に答える