3

我使用此处给出的答案在 SitEdit 2009 SP2 上启用了内联编辑

使用 XSLT TBB 时,如何在 SiteEdit 中启用内联字段编辑?

但是在 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>

我的代码有什么问题?

4

1 回答 1

4

该错误消息意味着您的<!-- Start SiteEdit Component Field: { ...} -->命令中的 XPath 未指向当前组件中的字段。鉴于您的 XPath 显示为[1],这听起来非常准确。

您需要找出导致输出空 XPath 的原因。在您的 XSLT 中,您使用<tcdl:ComponentField>包装器标记该字段。此包装器稍后由“启用内联编辑”TBB 处理以生成相应的<!-- Start SiteEdit Component Field ... -->命令。由于 SiteEdit 前端需要字段的 XPath 并且tcdl:ComponentField仅包含字段名称,因此 TBB 将需要根据字段名称查找 XPath。

SiteEdit 2009 中的“启用内联编辑”TBB 在处理时tcdl:ComponentField通过查看当前已解决的项目 ( engine.PublishingContext.ResolvedItem.Item.Id) 来查找当前组件。然后它查找该组件中的字段以确定它的 XPath。

如果您在模板生成器中查看包,包列表底部的组件是什么?该组件是否包含content_header字段?

于 2012-05-03T17:31:47.670 回答