我们目前正在实施一个支持新 UI/XM(体验管理器)的新站点。目前,虽然似乎不可能向我们的“文章”组件添加“段落”(这是一个多值嵌入式模式)。我想这样的基本功能会起作用。
此外,我们有一个组件链接到多值组件链接字段中的多个其他组件。这些单独链接的组件是可编辑的(它们使用 渲染RenderComponentPresentation()
),但我们不能将新的组件链接添加到多值字段。
任何人都知道如何让这个工作?
亲切的问候
编辑:这将在 2013 SP1 中修复!
我们目前正在实施一个支持新 UI/XM(体验管理器)的新站点。目前,虽然似乎不可能向我们的“文章”组件添加“段落”(这是一个多值嵌入式模式)。我想这样的基本功能会起作用。
此外,我们有一个组件链接到多值组件链接字段中的多个其他组件。这些单独链接的组件是可编辑的(它们使用 渲染RenderComponentPresentation()
),但我们不能将新的组件链接添加到多值字段。
任何人都知道如何让这个工作?
亲切的问候
编辑:这将在 2013 SP1 中修复!
目前在 Tridion 的 Experience Manager UI 中无法添加多值嵌入模式。我建议在表单视图中打开组件以添加段落。
如果您认为 SDL 添加您错过的功能是个好主意,您可以在以下网址提出建议:http: //ideas.sdltridion.com。
根据文档(需要密码,有关详细信息,请参阅http://docportal.sdl.com/sdltridion),您应该在 DWT 模板中使用以下内容:
<!-- TemplateBeginRepeat name="fieldname" -->
@@RenderComponentField("fieldname", TemplateRepeatIndex)@@
<!-- TemplateEndRepeat -->
但这对组件链接来说不是很有用,因为它只是在模板中呈现 TCMURI,因此您可能希望它成为动态链接,然后您可以在 DWT 模板中使用以下内容:
<!-- TemplateBeginRepeat name="fieldname" -->
<tcdl:ComponentField name="fieldname" index="${TemplateRepeatIndex}">
<a href="#" tridion:href="@@Field@@" tridion:type="Component">@@Field@@</a>
</tcdl:ComponentField>
<!-- TemplateEndRepeat -->
如果您需要该链接中链接组件的标题,则可以使用Dreamweaver Get eXtension (DGX)等。
现在这将为您提供所有可编辑字段的值,当您编辑其中一个字段时,您会在字段属性的左上角看到一个绿色加号按钮,您可以从中添加新值(您将看到一个字段属性顶部的删除和移动按钮)。
请注意,如果您的多值字段最初是空的,您必须确保有一个 tcdl 标签允许 XPM 理解它应该在那里显示字段编辑属性,您可以使用这样的东西:
<!-- TemplateBeginIf cond="CollectionLength('Field.Values') == 0" -->
<tcdl:ComponentField name="${Field.Name}"></tcdl:ComponentField>
<!-- TemplateEndIf -->
有关内联编辑的更多详细信息,请参阅文档。
似乎我有点误解了这个问题,正如弗兰克提到的不幸的是,XPM 目前无法添加多值可嵌入字段集。我很想使用以下构造,它允许我编辑所有字段,但是多值按钮丢失了(因为不支持):
<!-- TemplateBeginRepeat name="fieldname" -->
<tcdl:ComponentField name="fieldname" index="${TemplateRepeatIndex}">
<!-- TemplateBeginRepeat name="Field.embeddableFieldname1" -->
@@RenderComponentField(FieldPath+".embeddableFieldname1", TemplateRepeatIndex)@@
-
@@RenderComponentField(FieldPath+".embeddableFieldname2", TemplateRepeatIndex)@@
<!-- TemplateEndRepeat -->
</tcdl:ComponentField>
<!-- TemplateEndRepeat -->
我使用此代码来呈现多值嵌入式段落模式的字段,它在 XPM 中工作得很好:
<!-- TemplateBeginRepeat name="Fields.Paragraph" -->
@@RenderComponentField("Fields.Paragraph[${TemplateRepeatIndex}].Body", 0)@@
<!-- TemplateEndRepeat -->