Как получить максимальное количество индексов для TemplateRepeatIndex в DWT

У меня есть компонент в Tridion, где его дизайн метаданных имеет поле под названием "список", который заполняется с использованием категорий и ключевых слов

Я использовал код DWT для заполнения элементов, присутствующих в списке, используя следующий код, используя My DWT TBB

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

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

<!-- TemplateEndRepeat -->

но я получаю предварительный просмотр как

раз, два, три, четыре, пять,

желаемый результат должен быть таким: один, два, три, четыре, пять

так что для этого мне нужно получить максимальное количество "TemplateRepeatIndex" Есть ли встроенная функция, чтобы проверить то же самое.

используя Tridion-sp1,2011.

4 ответа

Решение

Вы можете решить это с помощью встроенной функции: CollectionLength.

Если у вас есть многозначное текстовое поле "multiValuedField", вы можете найти количество элементов, используя следующее выражение:

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

Коллекция Length получает выражение, которое является полностью определенным именем элемента и селектором значения элемента пакета.

Возвращаемое значение является строкой. Когда вам нужно выполнить целочисленное сравнение или вычисление, вам нужно проанализировать значение в целое число:

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

Это работает, потому что строка между @@ и ${} анализируется как JScript.

Простым решением было бы переключить вашу логику.

Вы можете проверить, равен ли TemplateRepeatIndex 0. Если это не так, выведите запятую перед значением.

Я считаю, что единственный способ сделать это - создать TBB, который добавляет количество полей как элемент в пакете. Тогда вы сможете сделать следующее:

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

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

<!-- TemplateEndRepeat -->

Уолтер решил и объяснил эту тему несколько лет назад, представив пользовательскую функцию.

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

Не забудьте перекомпилировать его код для текущей версии Tridion.

Обновление: вы можете найти все встроенные функции (и примеры их использования), которые Tridion имеет для использования в DWT, на этой странице: http://code.google.com/p/tridion-practice/wiki/BuiltInFunctionsForUseInHtmlTemplates

Другие вопросы по тегам