Как отфильтровать содержимое поля в шаблонном блоке Dreamweaver - PullRequest
3 голосов
/ 14 марта 2012

Я работаю над Dreamweaver TBB в SDL Tridion 2011.

Допустим, у моего компонента есть поле "aaa" с этим содержимым.

"hi hello <bbb name='abcd_efgh_ijkl'>MRJJJJ</bbb> how are you"

Я хочу написать DWB TBB, напримерчто я получу вывод как

"hi hello MRJJJJ how are you".

Так что я хочу вырезать некоторую часть Контента в поле (здесь имя поля aaa), когда я отображаю для целей отображения.

Я новичок в этом и застрял здесь.

Ответы [ 4 ]

4 голосов
/ 14 марта 2012

В DWT TBB в Tridion вы обычно должны получать значения только из Компонента.Обработка этих значений - это не то, что вы делаете в DWT.

Если вам нужна такая обработка, взгляните на реализацию пользовательского IFunctionSource.С этим вы можете написать что-то вроде этого в вашем DWT:

@@StripXhtml("aaa")@@

Таким образом, вы реализуете свою собственную функцию StripXhtml в классе IFunctionSource.

Для отличного примера такого источника функцииОзнакомьтесь с Dreamweaver Get Extension от Nuno в SDL Tridion World.

Если вы действительно хотите объединить HTML и обработку в один TBB, вы можете рассмотреть возможность использования шаблонаязык, который поддерживает комбинацию лучше. XSLT Mediator и Razor Mediator являются хорошими примерами таких типов шаблонов.

1 голос
/ 14 марта 2012

Вы можете извлечь значение этого поля и поместить его в свой шаблонный пакет, используя либо фрагмент C #, либо сборку Microsoft.NET TBB. Затем вы можете манипулировать значением с помощью C # и выводить измененное значение с помощью DWT, используя @@ NameOfModifiedValueInPackage @@. Другие предложения источников функций или другого типа посредника в равной степени действительны. Однако большинство проектов в любом случае требуют какой-то разновидности .NET TBB, так что это не должно быть дополнительной работой.

0 голосов
/ 14 марта 2012

Интересно, вы действительно понимаете, что пытаетесь сделать?

Глядя на пример, который вы здесь используете, похоже, что вы пытаетесь заменить какой-либо текст динамической переменной - например, именем пользователя. Однако если вы сделаете это в шаблоне Dreamweaver, он будет выполнен во время публикации, а не в тот момент, когда страница будет предоставлена ​​посетителю вашего веб-сайта, в результате чего это значение будет отображаться КАЖДОМУ посетителю сайта.

0 голосов
/ 14 марта 2012

Похоже на проблему ResolveXHTML.

Используете ли вы TBB «Завершение действий по умолчанию» как последний TBB в вашем составном шаблоне?Он содержит функцию ResolveXHTML, которая преобразует содержимое поля Tridion RTF и удаляет пространства имен.

...