【问题标题】:How to filter the content of a field in a Dreamweaver Template Building block如何过滤 Dreamweaver 模板构建块中的字段内容
【发布时间】:2012-03-14 13:20:18
【问题描述】:

我正在 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)中去除部分内容。

我是新手,被困在这里。

【问题讨论】:

  • 您能否澄清您的问题 - 您真的要编辑组件的内容吗?或者你的意思是你想在渲染时去掉一些内容/标签以用于显示目的?
  • @ChrisSummers 我在问题 reg this 中进行了编辑。
  • 最好先考虑在没有 Tridion 的情况下如何做。一旦你得到答案,你就可以将它应用到 Tridion。 Tridion 开发并不是什么神奇的艺术,它通常是 .Net 开发、Java 开发、JavaScript 开发或 XML 开发,具体取决于您在系统中工作的位置。如果您从一开始就尝试使用 Tridion 找到答案,您通常会错过最明显且易于实施的解决方案。

标签: html dreamweaver tridion


【解决方案1】:

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

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

@@StripXhtml("aaa")@@

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • ..谢谢你的建议。正如你建议的那样,我想用这种方式实现。
    • ..谢谢你的建议。正如你所建议的,我想以这种方式实现。 1.创建DWT TBB 2.在其上应用.Net TBB根据需要修改内容,而不修改Component中的实际内容(只是为了修改视图)。 3.Need 应用站点编辑 4.default 完成操作。这里我有两个疑问。 1.如果我们对 DWT TBB 的输出进行一些操作,它会影响主组件。我不希望它影响我的组件。 2.我如何为.net TBB提供DWT TBB的输出。谢谢你的建议。
    • 操作 DWT 模板的输出只会改变包中项目的渲染内容,你的组件不会被触及,因为模板是只读的(除非你故意改变了SDL Tridion 2011 SP1 中的 CMS)。我还认为,如果您在应用 DWT 转换之前执行此操作,您会发现更容易检索和操作内容,因为来自 DWT 的 HTML 具有较少结构化的格式。如果您必须执行“发布 DWT”,则只需使用 .NET 程序集从包中加载名为“输出”的项目。
    【解决方案3】:

    感觉像是 ResolveXHTML 类型的问题。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多