正如您可能已经知道的那样,我正在努力研究一些使用Razor的XPM模板。我遇到了另一个问题,这次是关于在模板中渲染组件以使它们成为siteEditable。
以下我不确定。我有一个名为“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>
这一个ALSO添加了“启用内容编辑”TBB。在前端会发生这种情况:
<div class="title"><span><span>Men</span></span></div>
因为父模板还会向字段添加跨度。
所以我的问题:我该如何解决这个问题?上面提到的Title字段必须在父模板中,但我不能为它创建一个特殊的模板,因为它不是组件链接。我无法从我的RCP模板中获取TBB,因为它不会以这种方式编辑。有意思吗?
我不能以某种方式禁用模板构建器内的跨度吗?