3

ここに記載されている回答を使用して、SitEdit2009SP2でインライン編集を有効にしました

XSLT TBBを使用しているときにSiteEditでインラインフィールド編集を有効にするにはどうすればよいですか?

しかし、結果のページをSiteEditにロードすると、このエラーが発生し続けます。

Sys.FormatException:コンポーネントxmlスキーマからタイプ情報を取得できませんでした。フィールド:cf_tcm:20-33457-64_content_header XPath:[1]

私のXSLTTBBフラグメント:

<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 に答える