有没有办法在调用RenderComponentPresentation时传递变量?

时间:2012-05-03 12:48:29

标签: tridion tridion2009

  

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

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

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:16)

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

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

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

您需要拥有C#Fragment或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@@

希望这有帮助!