页面上的多个动态SiteEdit CP

时间:2012-07-12 14:55:22

标签: tridion siteedit

我们在SDL Tridion 2009 SP1中有SiteEdit 2009 SP2,它适用于正常发布的页面。如果我们在页面中有单个动态组件演示(DCP),它也可以正常工作。但是当我们在页面上有多个DCP时,它只占用第一个DCP并忽略所有其他DCP。

这是我的代码

<xsl:variable name="SE_CP_MarkUP">
<![CDATA[ <!-- Start SiteEdit Component Presentation: {"ID" : "cp_%ID%", "ComponentID" : "%ID%", "ComponentTemplateID" : "tcm:XX-XXXXX-32", "Version" : 0, "IsQueryBased" : true  } -->]]>

我在循环中使用此变量

<xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>

请建议可能出现的问题?

更多细节:

生成的HTML

    <div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287142", "ComponentID" : "tcm:13-287142", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 3, "IsQueryBased" : true  } -->
  HTMLConent
</div>
<div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287162", "ComponentID" : "tcm:13-287162", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 2, "IsQueryBased" : true  } -->
  HTMLConent
</div>
<div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287204", "ComponentID" : "tcm:13-287204", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 1, "IsQueryBased" : true  } -->
  HTMLConent
</div>
<div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287234", "ComponentID" : "tcm:13-287234", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 4, "IsQueryBased" : true  } -->
  HTMLConent
</div>
<div>
  <!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287251", "ComponentID" : "tcm:13-287251", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 3, "IsQueryBased" : true  } -->
  HTMLConent
</div>

SiteEdit设置

<!-- SiteEdit Settings: { "PageID" : "tcm:13-287332-64", "PageVersion" : 2, "TargetTypeID" : "", "ComponentPresentationLocation" : 1, "BluePrinting" : { "PageContext" : "tcm:0-8-1", "ComponentContext" : "tcm:0-13-1", "PublishContext" : "tcm:0-13-1"}} -->

我在运行时获得了高于html的值。我只能在第一个CP上悬停时使用siteedit打开第一个组件,如果我将鼠标悬停在任何其他CP上,则不会发生任何事情。

页面上也没有JS错误。

谢谢, Vikas Kumar

5 个答案:

答案 0 :(得分:7)

感谢您看到这一点,我刚刚意识到SiteEdit正在发挥作用。所有SiteEdit标记div都具有相同的绝对位置,这样无论我在哪里悬停,div都显示在顶部。

我正在与设计团队合作对其进行排序。

谢谢, Vikas Kumar

答案 1 :(得分:5)

SiteEdit组件表示标记应始终包含在像DIV这样的HTML元素中,这样SiteEdit就可以区分组件表示的开头和结尾。

所以在你的循环中你应该输出如下内容:

<div>
    <xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>
    <!-- output the content here -->
</div>

答案 2 :(得分:2)

通常我会说这是因为没有给每个组件演示文稿一个唯一的ID。 但看起来你已经覆盖了它。

我假设你出于对简洁的关注而省略了你的问题中的设置评论,对吗?

您是否有机会向我们提供整个HTML?当然,删除所有敏感内容,但请在完成后确认您仍然遇到问题。

答案 3 :(得分:1)

您确定用户拥有所有组件的权利吗?它们都存在吗

检查浏览器的开发人员工具可能最简单。找到GetComponentAndSchemas的请求。

在该请求的主体中(因此发送到服务器的部分),您将找到SiteEdit要求的所有组件。因此,如果这不包括所有的组件,则它在某种程度上无法在HTML中找到它们。

然后在该请求的响应中,您应该找到所请求的组件以及它们所基于的模式。如果某些组件不存在,它们会以某种方式在服务器上过滤掉。很可能是因为用户没有权利,但也可能是他们在出版物13中不存在。

答案 4 :(得分:1)

我遇到了同样的问题,特别是如果你在siteedit span / div标签周围有任何html5标签。你查过这篇文章(来自Bart),它可能有所帮助。它对我有帮助。

http://www.sdltridionworld.com/articles/sdltridion2011/siteedit_zindex.aspx