我正在使用Dreamweaver模板构建块并为页面实现SiteEdit。
我正在使用SDL Tridion 2011 SP1和Site Edit 2012以及默认Dream Weaver Templating。
我的架构有一个类型为“Component Link”的多值字段。 我的主要组件XML看起来像这样。
<Content xmlns="UUID">
<link xlink:type="simple" xlink:href="tcm:202-8121"
xmlns:xlink="http://www.w3.org/1999/xlink"></link>
<link xlink:type="simple" xlink:href="tcm:202-8122"
xmlns:xlink="http://www.w3.org/1999/xlink"></link>
</Content>
链接组件XML看起来像这样。
<Content xmlns="Some other UUID">
<text>Hi all</text>
</Content>
我的目标是获取链接组件的架构名称,并为链接组件的字段启用内联编辑。我为链接组件的模式创建了一个单独的组件模板,其中包含URI tcm:202-8142-32
。
我已经为这样的主要组件编写了DWT TBB。
<!-- TemplateBeginRepeat name="Fields.link" -->
<div>
(FieldPath=@@FieldPath@@, TemplateRepeatIndex=@@TemplateRepeatIndex@@)
</div>
<!-- Not able to get the schema name of the linked component -->
@@RenderComponentPresentation(link, "tcm:202-8142-32")@@
<!-- TemplateEndRepeat -->
我无法遍历组件链接字段“link”。
然后我改变了只允许单个组件链接的模式。当TBB编写如下时,事情正常:
@@RenderComponentPresentation(link, "tcm:202-8142-32")@@
我知道问题在于循环遍历多个组件链接。
请建议如何遍历多个组件链接并获取每个链接组件的模式名称。
答案 0 :(得分:1)
我认为你不可能使用DWT获取模式名称。您需要做的是编写一个c#构建块来提取您要查找的值,然后将此值放入包中。
答案 1 :(得分:1)
当您循环遍历多值字段的值时(就像您在此处所做的那样),当前值在名为Field
的变量中可用。因此,如果您只是将呼叫更改为RenderComponentPresentation
以引用该呼叫,我认为它应该有效:
<!-- TemplateBeginRepeat name="Fields.link" -->
<!-- Not able to get the schema name of the linked component -->
@@RenderComponentPresentation(Field, "tcm:202-8142-32")@@
<!-- TemplateEndRepeat -->