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

如何在Tridion组件模板中转义被多个模板使用的${}?,tridion,tridion-2011,Tridion,Tridion 2011,我遇到了这样一种情况,即我对值${test}进行了验证,在呈现该值的组件模板中,该值显示正常。当另一个模板调用此组件和使用@@RenderComponentPresentation(component.ID,MyFirstTemplate)的模板时,出现了问题。@@RenderComponentPresentation(component.ID,MyFirstTemplate)@此时${test}进行计算,由于组件或包中没有此类项目,因此计算结果为零 我有一个组件模板,它读取组件字段的值(包含

我遇到了这样一种情况,即我对值
${test}
进行了验证,在呈现该值的组件模板中,该值显示正常。当另一个模板调用此组件和使用
@@RenderComponentPresentation(component.ID,MyFirstTemplate)的模板时,出现了问题。@@RenderComponentPresentation(component.ID,MyFirstTemplate)@
此时
${test}
进行计算,由于组件或包中没有此类项目,因此计算结果为零

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

    • 此模板呈现良好,我返回“${test}”
  • 现在我有了组件模板2,它调用
    @@RenderComponentPresentation(Component.ID,ComponentTemplateOne.ID)@

    • 这就是现在对
      ${test}
      求值而不是保留的地方,因此它从
      ${test}
      变为“”,因为它找不到具有该名称的变量或组件字段名
  • 组件模板2然后被组件模板3以相同的方式调用
    @@RenderComponentPresentation(Component2.ID,ComponentTemplateTwo.ID)@

    • 由于
      ${test}
      已经在组件模板2中进行了计算并丢失,因此我不再以
      ${test}
      结束,我仍然以“”结束
我试过:

  • @@RenderComponentField('myField',0,False,False)@
  • @@RenderComponentField('myField',0,True,False)@
  • @@RenderComponentField('myField',0,False,True)@
不走运

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

  • 将“\”放在打开和关闭的花括号前面
    $\{test\}
  • 我需要确保在最后一个模板(页面或组件)执行后删除“\”
  • 我现在有一个C#TBB,它接受“${test}”,并对其执行以下操作:
    • 将初始模板中的
      ${test}
      转换为
      $\{test\}
      ,并将页面模板上的C#TBB转换为
      ${test}
      的初始值
有没有办法防止这种情况发生,或者有没有办法避免做我正在做的事情来实现这一点?

您是否尝试过这种方法,您应该能够通过此链接实现这一点

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

感谢您的建议,它适用于第一个模板,但调用第一个模板的第二个模板会对其进行评估,并且在包或组件中找不到具有该名称的项,因此不会重新生成任何内容。因此,我没有保留${endpoint},而是得到“”。