我正在与SDL Tridion World和SiteEdit 2009 SP3的XSLT Mediator一起开发SDL Tridion 2011 SP1。我已经创建了XSLT TBB,并启用了组件模板的内联编辑,在页面模板中启用了SiteEdit。我已经用它创建了这个页面并发布了它。
但并不是每个字段都启用了SiteEdit。当我查看页面预览的源代码时,它只有一个用于整个组件的span标记。但通常情况下,如果为组件启用了SiteEdit,我们应该为每个字段设置跨度标记。
我被困在这一点上了。我已经使用XSLT中介器创建了XSLT TBB。
有人能建议我们是否可以使用XSLT TBB在复合模板中启用SiteEdit吗?如果可以做到,建议我做的步骤。
发布于 2012-03-12 21:33:49
如果将XSLT TBB与XSLT Mediator一起使用,则需要手动包装要为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-12 21:34:44
它取决于模板(XSLT、DWT、VBscript或您使用的任何技术)来围绕每个字段生成一个元素。
<span>
<!-- Start SiteEdit Component Field: { ... } -->
This is the value of the field
</span>通常,您将在DWT中调用RenderComponentField,它将使用<tcdl:ComponentField>元素标记每个字段。然后,通过"Enable inline editing“TBB将该元素转换为正确的元素(上面示例中的span )。
因此,如果从XSLT生成HTML,请确保:
RenderComponentField或<tcdl:ComponentField自己或https://stackoverflow.com/questions/9667640
复制相似问题