【问题标题】:Is there a way to pass a variable through when calling RenderComponentPresentation? [duplicate]调用 RenderComponent Presentation 时有没有办法传递变量? [复制]
【发布时间】:2012-05-12 23:43:25
【问题描述】:

可能重复:
Variable setting in Dreamweaver template in SDL Tridion

我们使用RenderComponentPresentation(在 Tridion 2009 上)呈现内部和外部链接,以便代码库仅在一个 Dreamweaver 模板中。如果我们可以通过一个可选的 CSS 类在渲染链接时使用,那将会很有帮助。

有什么想法可以做到这一点吗?

【问题讨论】:

  • 嗨,Puf,我试过了,但对我的情况没有帮助。还是谢谢。
  • 这适用于 SDL Tridion 2011 还是 2009?也许您可以更新您的问题以反映这一点。也许您还可以解释您的 DWT 的位置?您是否尝试将值从页面布局 DWT 传递到组件布局 DWT?

标签: tridion tridion2009


【解决方案1】:

可以在 RenderContext 中设置一个值,然后在第二个 Dreamweaver 模板中检索它。

在调用 RenderComponentPresentation 之前设置渲染上下文值如下:

@@SetRenderContextVariable("CSSClass","red")@@  

您需要有一个 C# 片段或 TBB 才能将变量从渲染上下文中取出,并将它们添加到第二个 Dreamweaver 模板中的包中。一个例子是:

var renderContext = engine.PublishingContext.RenderContext;
foreach (string key in renderContext.ContextVariables.Keys)
{
    var value = renderContext.ContextVariables[key] as string;
    var item = package.CreateStringItem(ContentType.Text, value);
    package.PushItem("RenderContextVariable."+key, item);
}

然后您应该能够使用标准 Dreamweaver 表示法访问包中的变量

@@RenderContextVariable.CSSClass@@

希望这会有所帮助!

【讨论】:

猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2020-09-02
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多