6

我有一个 tridion 组件,其中它的元数据设计有一个名为“列表”的字段,该字段使用类别和关键字填充

我使用 DWT 代码使用 My DWT TBB 使用以下代码填充列表中存在的项目

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

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

<!-- TemplateEndRepeat -->

但我得到预览

一二三四五,

期望的输出应该是:一、二、三、四、五

所以为此我需要获得“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

我相信做到这一点的唯一方法是创建一个 TBB,将字段计数添加为包中的一个项目。然后,您将能够执行以下操作:

<!-- 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 回答