How to get the Maximum index count for TemplateRepeatIndex in DWT

1.8k Views Asked by At

I have a component in tridion where its metadata design has a field called 'list' which is populated using Categories and Keywords

I used a DWT code to populate items present in the list using the following code using My DWT TBB

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

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

<!-- TemplateEndRepeat -->

but Im getting preview as

one,two,three,four,five,

desired output should be like: one,two,three,four,five

so for this i need to get the maximum count of "TemplateRepeatIndex" Is there any inbuilt function to check the same.

using Tridion-sp1,2011.

4

There are 4 best solutions below

9
On BEST ANSWER

You can solve this with the built in function: CollectionLength.

When you have a multi-valued text field "multiValuedField" you can find the item count using the following expression:

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

Collection Length receives an expression that is the fully qualified name of an item and a value selector of a package item.

The value returned is a string. When you need to perform an integer comparison or calculation you need to parse the value to an integer:

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

This works because the string between @@ and ${} is parsed as JScript.

2
On

An easy solution would be to switch your logic around.

You can check if TemplateRepeatIndex is 0. If it is not, output the comma in front of the value.

2
On

Walter solved and explained this topic a few years ago by introducing a custom function.

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

Don't forget to recompile his code for the current version of Tridion.

Update: you can find all built-in functions (and examples of their usage) that Tridion has for use in DWT on this page: http://code.google.com/p/tridion-practice/wiki/BuiltInFunctionsForUseInHtmlTemplates

2
On

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 -->