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

fro*_*guy 11 tridion tridion2009

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

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

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

小智 16

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

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

@@SetRenderContextVariable("CSSClass","red")@@  
Run Code Online (Sandbox Code Playgroud)

您将需要一个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);
}
Run Code Online (Sandbox Code Playgroud)

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

@@RenderContextVariable.CSSClass@@
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 如果您可以访问SDL Tridion文档,请参阅http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/idheading-359879368,它位于Tridion Cookbook的http:// code .google.com/p /的tridion实践/维基/ BuiltInFunctionsForUseInHtmlTemplates (2认同)