问题 调用RenderComponentPresentation时有没有办法传递变量? [重复]


可能重复:
SDL Tridion中Dreamweaver模板中的变量设置 

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

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


9645
2018-05-03 12:48


起源

嗨Puf,我试过了,这对我的情况没有帮助。不管怎么说,还是要谢谢你。 - frontendzzzguy
这是针对SDL Tridion 2011还是2009?也许您可以更新您的问题以反映这一点。也许您还可以解释DWT的位置?您是否尝试将页面布局DWT中的值传递给组件布局DWT? - Chris Summers


答案:


可以在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@@

希望这可以帮助!


16
2018-05-03 12:52



谢谢克里斯,我现在就试试看,看看它是否有效。 - frontendzzzguy
如果您可以访问SDL Tridion文档,请在此处详细说明 sdllivecontent.sdl.com/LiveContent/content/en-US/... 它出现在Tridion Cookbook中 code.google.com/p/tridion-practice/wiki/... - Chris Summers