3

我正在 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

4 回答 4

4

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

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

@@StripXhtml("aaa")@@

因此,您将在 IFunctionSource 类中实现自己的 StripXhtml 函数。

有关此类函数源的一个很好的示例,请查看SDL Tridion World 上的 Nuno 的Dreamweaver Get Extension 。

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

于 2012-03-14T13:34:00.017 回答
1

您可以使用 C# 片段或 Microsoft.NET 程序集 TBB 提取该字段的值并将其放入模板包中。然后,您可以使用 C# 操作该值,并通过使用 @@NameOfModifiedValueInPackage@@ 使用 DWT 输出修改后的值。Function Sources 或不同类型的 Mediator 的其他建议同样有效。但是,无论如何,大多数项目都需要某种 .NET TBB,因此这不应该是太多额外的工作。

于 2012-03-14T13:56:34.360 回答
0

感觉像是 ResolveXHTML 之类的问题。

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

于 2012-03-14T14:12:00.117 回答
0

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

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

于 2012-03-14T14:40:00.933 回答