您可能已经知道,我正在努力使用 Razor 制作一些 XPM 模板。我遇到了另一个问题,这次是关于在模板中渲染组件以使它们可站点编辑。
以下我不确定。我有一个组件,它有一个名为“Title”的标题字段,以及由具有标题、描述和图像的组件组成的多值组件链接字段。我们暂时称它为“链接的 USP”。
目前,这是由一个名为“页面横幅”的模板呈现的,它只是用一些 If 循环遍历字段以确定它的呈现方式,尤其是对于标题。为了让 XPM 工作,这个模板需要渲染“Linked USP”的组件表示。所以我们创建了一个名为“[XPM] USP ITEM”的模板。- 此组件模板添加了“启用内容编辑 TBB”。
现在,当我想让标题也可编辑时,问题就出现了。听起来很简单,不是吗?不是真的 - 因为当父模板添加了“启用内容编辑”TBB 时,它会将<span>
标签添加到所有可编辑字段,但在此模板中调用的模板也将具有<span>
-tags,有效地膨胀 html 并使其由于重复<span>
s ,无法编辑 RenderComponentPresentation 中的字段。
一些代码供您娱乐并说明我的问题:
<h1>@RenderComponentField("Title", 0)</h1>
@Foreach(var linkedUSP in Fields.USPS){
@RenderComponentPresentation("linkedUSP.ID", "tcm:10-1076-32")
}
此模板添加了启用内容编辑 TBB。
现在,对于上面提到的 RCP,在其 [XPM] 模板中:
<div class="title">@RenderComponentField("Title", 0)</div>
<p>@RenderComponentField("Description", 0)</p>
<tcdl:ComponentField name="img">
<img src="@img" alt="img.MetaData.alt">
</tcdl:ComponentField>
这一个还添加了“启用内容编辑”TBB。在前端会发生这种情况:
<div class="title"><span><span>Men</span></span></div>
因为父模板还向字段添加跨度。
所以我的问题是:我该如何解决这个问题?上面提到的 Title 字段必须在父模板内,但我不能为它创建一个特殊的模板,因为它没有组件链接。我无法将 TBB 从我的 RCP 模板中取出,因为那样无法对其进行编辑。有趣吧?
我不能以某种方式禁用模板构建器中的跨度吗?