如何获取DWT中TemplateRepeatIndex的最大索引计数

时间:2012-08-21 09:44:17

标签: dreamweaver tridion tridion-2011 dreamweaver-templates

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

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

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

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

<!-- TemplateEndRepeat -->

但我正在预览

一个,两个,三个,四个,五个,

期望的输出应该是: 一个,两个,三个,四个,五个

所以为此,我需要获得“TemplateRepeatIndex”的最大数量 是否有任何内置函数来检查相同的内容。

使用Tridion-sp1,2011。

4 个答案:

答案 0 :(得分:9)

您可以使用内置函数解决此问题:CollectionLength。

当您有一个多值文本字段“multiValuedField”时,您可以使用以下表达式找到项目计数:

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

Collection Length接收一个表达式,该表达式是项目的完全限定名称和包项目的值选择器。

返回的值是一个字符串。当您需要执行整数比较或计算时,您需要将值解析为整数:

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

这是有效的,因为@@和$ {}之间的字符串被解析为JScript。

答案 1 :(得分:6)

一个简单的解决方案就是改变你的逻辑。

您可以检查TemplateRepeatIndex是否为0.如果,则输出值前面的逗号

答案 2 :(得分:2)

我认为唯一的方法是创建一个TBB,将字段数添加为包中的项目。然后,您就可以执行以下操作:

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

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

<!-- TemplateEndRepeat -->

答案 3 :(得分:2)

几年前,沃尔特通过引入自定义功能解决并解释了这一主题。

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

不要忘记为当前版本的Tridion重新编译他的代码。

更新 :您可以在此页面上找到Tridion在DWT中使用的所有内置函数(及其用法示例):http://code.google.com/p/tridion-practice/wiki/BuiltInFunctionsForUseInHtmlTemplates