2

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

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

我被困在这一点上。我已经使用 XSLT 中介创建了 XSLT TBB。

谁能建议我们是否可以使用 XSLT TBB 在复合模板中启用 SiteEdit?如果可以,请建议我执行此操作的步骤。

4

2 回答 2

4

由模板(XSLT、DWT、VBscript 或您使用的任何技术)来围绕每个字段生成元素。

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

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

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

  • 要求RenderComponentField该领域或
  • 自己输出<tcdl:ComponentField
  • 输出包装元素和<!-- Start SiteEdit Component Field你自己
于 2012-03-12T13:34:43.597 回答
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 语法将其包装起来。

于 2012-03-12T13:33:49.007 回答