如何筛选Dreamweaver模板构建块中字段的内容

时间:2012-03-14 13:20:19

标签: html dreamweaver tridion

我正在使用SDL Tridion 2011中的Dreamweaver TBB。

假设我的组件有一个包含此内容的字段“aaa”。

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

我想写一个DWT TBB,这样我就可以生成输出

"hi hello MRJJJJ how are you".

所以当我为显示目的进行渲染时,我想在字段中删除内容的某些部分(此处字段名称为aaa)。

我是新手,并被困在这里。

4 个答案:

答案 0 :(得分:4)

在Tridion的DWT TBB中,您通常只应从Component中检索值。处理这些值不是您在DWT中所做的事情。

如果您确实需要这样的处理,请查看实现自定义IFunctionSource。有了这个,你可以在你的DWT中写下这样的东西:

@@StripXhtml("aaa")@@

所以你要在IFunctionSource类中实现自己的StripXhtml函数。

关于这样一个功能源的一个很好的例子,请看看Nuno在SDL Tridion World上的Dreamweaver Get Extension结束。

如果您真的想将HTML和处理组合到单个TBB中,您可能需要考虑使用更好地支持组合的模板语言。 XSLT MediatorRazor Mediator是此类模板类型的好例子。

答案 1 :(得分:1)

您可以使用C#Fragment或Microsoft.NET Assembly TBB提取该字段的值并将其放在模板包中。然后,您可以使用C#操作该值,并使用@@ NameOfModifiedValueInPackage @@使用DWT输出修改后的值。功能源的其他建议或不同类型的介体同样有效。但是,大多数项目无论如何都需要某种.NET TBB,所以这不应该是额外的工作。

答案 2 :(得分:0)

感觉像ResolveXHTML一样的问题。

您是否使用“默认完成操作”TBB作为复合模板中的最后一个TBB?它包含一个ResolveXHTML函数,可以转换Tridion RTF字段内容并删除名称空间。

答案 3 :(得分:0)

我想知道你是否真的明白你想要做什么。

查看您在此处使用的示例,看起来您正在尝试使用动态变量替换某些文本 - 例如用户名。但是,如果您在Dreamweaver模板中执行此操作,它将在发布时执行,而不是在将页面提供给您网站上的访问者时执行,从而导致向该站点的每个访问者显示相同的值。