如何在多个模板使用的Tridion组件模板中转义$ {}?

时间:2012-09-13 15:01:22

标签: tridion tridion-2011

我遇到的情况是我的值为${test},在我的组件模板中呈现这个值,当另一个模板使用{{{}调用此组件和模板时问题就出来了1}}此时@@RenderComponentPresentation(Component.ID, MyFirstTemplate)@@被评估,因为组件或包中没有这样的项,所以它的计算结果为空。

  • 我有一个组件模板一个读取组件字段的值(包含:${test}

    • 这个模板渲染得很好,我回来了“$ {test}”
  • 现在我有一个调用${test}

    的组件模板二
    • 这是@@RenderComponentPresentation(Component.ID, ComponentTemplateOne.ID)@@现在被评估而不是保留的地方,因此它从${test}变为“”,因为它找不到具有该名称的变量或组件字段名称。
  • 组件模板然后由组件模板3调用两个${test}

    • 由于@@RenderComponentPresentation(Component2.ID, ComponentTemplateTwo.ID)@@已经在组件模板二中进行了评估和丢失,因此我不再使用${test},我仍然只剩下“”。

我试过了:

  • ${test}
  • @@RenderComponentField('myField', 0, False, False)@@
  • @@RenderComponentField('myField', 0, True, False)@@
没有运气。

以下是我的工作,似乎有效:

  • 将“\”放在打开和关闭的大括号@@RenderComponentField('myField', 0, False, True)@@
  • 前面
  • 我需要确保在最后一个模板(页面或组件)执行后删除“\”。
  • 我现在有一个C#TBB,它接受“$ {test}”并执行以下操作:
    • 将初始模板中的$\{test\}转换为${test},并将页面模板上的C#TBB转换为初始值$\{test\}

有没有办法防止这种情况发生或避免做我正在做的事情来使这项工作?

1 个答案:

答案 0 :(得分:4)

你试过这个link,你应该可以通过这个链接

@@"$" + "{" + "test" + "}"@@