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

时间:2012-03-12 13:11:01

标签: tridion

我正在使用SDL Tridion World和SiteEdit 2009 SP3的XSLT Mediator开发SDL Tridion 2011 SP1。我创建了XSLT TBB,并为组件模板启用了内联编辑,在页面模板中启用了SiteEdit。我使用它创建了页面并发布了它。

但是没有为每个字段启用SiteEdit。 当我查看页面预览源时,它只有一个整个组件的span标签。 但通常如果为组件启用了SiteEdit,我们应该为每个字段添加span标记。

我在这一点上陷入困​​境。 我使用XSLT介体创建了XSLT TBB。

有人能建议我们是否可以使用XSLT TBB在复合模板中启用SiteEdit?如果可以的话,建议我采取相应的步骤。

2 个答案:

答案 0 :(得分:4)

如果您正在将XSLT TBB与XSLT介体一起使用,则需要手动换行要为SiteEdit启用的字段,以便它们出现在模板的输出中。考虑使用类似于此的代码使用XSLT包装字段:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <xsl:for-each select="//*[local-name()='paragraph']">
            <div>
                <tcdl:ComponentField name="paragraph[{position() -1}].text" index="0">
                    <xsl:apply-templates select="./*[local-name()='text']"/>
                </tcdl:ComponentField>
            </div>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

此代码循环遍历每个嵌入的段落字段,并输出文本字段值,并使用适当的SiteEdit TCDL语法对其进行包装。

答案 1 :(得分:4)

模板(XSLT,DWT,VBscript或您使用的任何技术)可以在每个字段周围生成元素。

 <span>
     <!-- Start SiteEdit Component Field: { ... } -->
     This is the value of the field
 </span>

通常,您会在DWT中调用RenderComponentField,这会在每个字段中标记<tcdl:ComponentField>元素。然后通过“启用内联编辑”TBB将此元素转换为正确的元素(上例中的span)。

因此,如果您从XSLT生成HTML,请确保:

  • 为字段OR
  • 调用RenderComponentField
  • 自己输出<tcdl:ComponentField
  • 输出包装元素和<!-- Start SiteEdit Component Field自己