2012-03-14 3 views
3

Я работаю над Dreamweaver TBB в SDL Tridion 2011Как фильтровать содержимое поля в блоке Dreamweaver шаблонов

Say мой компонент имеет поле «ааа» с этим содержанием.

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

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

"hi hello MRJJJJ how are you". 

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

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

+0

Вы можете уточнить свой вопрос - действительно ли вы пытаетесь отредактировать содержимое компонента? Или вы имеете в виду, что хотите вырезать некоторые из содержимого/тегов при рендеринге для отображения? –

+0

@ChrisSummers я редактировал в вопросе reg this. – Patan

+0

Всегда полезно подумать, как вы это сделаете без Тридиона. Получив ответ, вы примените его к Tridion. Развитие Tridion - это не какое-то магическое искусство, это вообще.Чистая разработка, разработка Java, разработка JavaScript или разработка XML в зависимости от того, в какой системе вы работаете. Если вы попытаетесь найти ответ с Tridion с самого начала, вы часто пропустите самое очевидное и легко реализуемое решение. –

ответ

1

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

+0

.. Благодарю вас за предложение. Я предложил вам реализовать этот способ. – Patan

+0

.. Благодарю вас за предложение. По предложению вас я подумал об осуществлении этого пути. 1.Create DWT TBB 2.Apply .Net TBB на нем для изменения контента согласно требованию без изменения фактического содержимого в компоненте (просто для изменения вида). 3.Найти, чтобы применить сайт Редактировать 4.default Завершить действия. Здесь у меня есть два сомнения. 1.Если мы сделаем некоторые манипуляции на выходе DWT TBB, это повлияет на основной компонент. Я не хочу, чтобы это повлияло на мой компонент. 2. Как я могу обеспечить вывод TBW TBW для .net TBB. Благодарим за предложение. – Patan

+0

Манипулирование вывода шаблона DWT приведет только к изменению отображаемого содержимого элемента в пакете, ваш компонент не будет затронут, поскольку шаблоны доступны только для чтения (если вы не намеренно меняете поведение CMS по умолчанию в SDL Tridion 2011 SP1) , Я также думаю, что вам будет легче получить и обработать контент, если вы сделаете это до применения преобразования DWT, поскольку HTML из DWT имеет менее структурированный формат. Если вы должны сделать это «Опубликовать DWT», вы просто загрузите элемент с именем «Выход» из пакета с помощью сборки .NET. –

4

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

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

@@StripXhtml("aaa")@@ 

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

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

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

0

Чувства, подобные решению ResolveXHTML.

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

0

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

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