我使用此处给出的答案在SitEdit 2009 SP2上启用了内联编辑
How do I enable inline field editing in SiteEdit when using an XSLT TBB?
但在SiteEdit中加载生成的页面时,我一直收到此错误:
Sys.FormatException:无法从组件xml架构获取类型信息。 字段:cf_tcm:20-33457-64_content_header XPath:[1]
我的XSLT TBB片段:
<xsl:if test="//*[local-name()='content_header'] != ''">
<h1>
<div>
<tcdl:ComponentField name="content_header" index="0">
<xsl:value-of select="//*[local-name()='content_header']">
</tcdl:ComponentField>
</div>
</h1>
</xsl:if>
已发布文件中的输出:
<h1>
<div>
<span>
<!-- Start SiteEdit Component Field: {"ID" : "cf_tcm:20-33457-64_content_header", "XPath" : "[1]", "IsMultiValued" : false} -->
<tcdl:ComponentField name="content_header" index="0" SiteEditProcessed="true">
Test
</tcdl:ComponentField>
</span>
</div>
</h1>
我的代码出了什么问题?
答案 0 :(得分:4)
该错误消息表示<!-- Start SiteEdit Component Field: { ...} -->
命令中的XPath未指向当前Component中的字段。鉴于您的XPath显示为[1]
,听起来非常准确。
您需要找到输出空XPath的原因。在您的XSLT中,使用<tcdl:ComponentField>
包装器标记该字段。此包装器稍后由&#34;启用内联编辑&#34;处理。 TBB生成相应的<!-- Start SiteEdit Component Field ... -->
命令。由于SiteEdit前端需要XPath到字段,而tcdl:ComponentField
只包含字段名称,因此TBB需要根据字段名称查找XPath。
&#34;启用内联编辑&#34; SiteEdit 2009中的TBB通过查看当前已解析的项目tcdl:ComponentField
来处理engine.PublishingContext.ResolvedItem.Item.Id
时查找当前组件。然后它查找该Component中的字段以确定其XPath。
如果您在Template Builder中查看软件包,软件包列表底部的组件是什么?该组件是否包含content_header
字段?