Tridion 如何将参数传递给组件(Dreamweaver)模板?

Tridion 如何将参数传递给组件(Dreamweaver)模板?,tridion,Tridion,我有一个页面模板,在页面底部的一个div中输出三个组件演示文稿。所有这三种组件演示都使用相同的模式和Dreamweaver组件模板 我希望根据这些组件是该div中的第一个组件还是最后一个组件,对这些组件演示文稿的样式略有不同-基本上,我希望向每个组件演示文稿添加“first”和“last”CSS类 我试图在模板构建块中动态地设置组件表示的“参数”。以下是我到目前为止得到的(不起作用,但只是想让你了解我正在尝试做什么): 在我的Dreamweaver模板中(同样,不起作用,只是让您了解我正在尝试做

我有一个页面模板,在页面底部的一个div中输出三个组件演示文稿。所有这三种组件演示都使用相同的模式和Dreamweaver组件模板

我希望根据这些组件是该div中的第一个组件还是最后一个组件,对这些组件演示文稿的样式略有不同-基本上,我希望向每个组件演示文稿添加“first”和“last”CSS类

我试图在模板构建块中动态地设置组件表示的“参数”。以下是我到目前为止得到的(不起作用,但只是想让你了解我正在尝试做什么):

在我的Dreamweaver模板中(同样,不起作用,只是让您了解我正在尝试做什么):


...

如何将“first”CSS类动态添加到页面上的第一个组件演示文稿中,将“last”CSS类动态添加到页面上的最后一个组件演示文稿中?

这是一个不错的问题

如果将div从组件模板中取出并放入页面模板中,则不需要将参数从页面模板传递到组件模板中。然后,将CSS类设置为第一个组件表示很容易:

<div class="<!-- TemplateBeginIf cond="TemplateRepeatIndex==0" -->myFirstCssClass<!-- TemplateEndIf -->"></div>

您也可以使用上下文变量来完成这类操作。不能直接从DWT执行此操作,因此这可能意味着可能要编写函数源,或者可能要用写入输出的程序集TBB替换DWT。如果这种方法适合您的设计,您可以从页面模板向engine.PublishingContext.RenderContext.ContextVariables
中写入一个变量,指示组件呈现是否是第一个,然后让组件模板读取该变量以确定要生成的输出


一般来说,其想法是在页面模板中写入变量,并在组件模板中读取它们。这应该足以让您避免将组件模板问题移动到页面模板中,当然,管道的数量可能会让您感到不快。在更极端的情况下,这是可能的,但是你有更多的管道,所以想要这样做可能是一种设计的味道。

你是否重命名了变量或其他东西?:)该代码应该如何工作(thisCPIndex=thisCPIndex,thisCPIndex==thisCPIndex-1,等等)?谢谢Peter。是的,事情就是这样。我不得不重命名一些变量,以便在这里发布。我已经更新了代码。感谢堆的Nickoli-我最终只是在我的页面模板中呈现了包含的div,效果很好。
<div class="block @@Parameters.myCssClass@@">
    ...
</div>
<div class="<!-- TemplateBeginIf cond="TemplateRepeatIndex==0" -->myFirstCssClass<!-- TemplateEndIf -->"></div>