我在tridion中有一个组件,其元数据设计有一个名为“list”的字段,该字段使用类别和关键字填充
我使用DWT代码使用My DWT TBB使用以下代码填充列表中的项目
<!-- TemplateBeginRepeat name="Metadata.list" -->
<!-- TemplateBeginIf cond="list" -->
@@RenderComponentField('list',TemplateRepeatIndex)@@ ,
<!-- TemplateEndIf -->
<!-- TemplateEndRepeat -->
但我正在预览
一个,两个,三个,四个,五个,
期望的输出应该是: 一个,两个,三个,四个,五个
所以为此,我需要获得“TemplateRepeatIndex”的最大数量 是否有任何内置函数来检查相同的内容。
使用Tridion-sp1,2011。
答案 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 < 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