我正在使用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?如果可以的话,建议我采取相应的步骤。
答案 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,请确保:
RenderComponentField
<tcdl:ComponentField
或<!-- Start SiteEdit Component Field
自己