17

我们在 SDL Tridion 2009 SP1 中有 SiteEdit 2009 SP2,它适用于正常发布的页面。如果我们在页面中有单个动态组件表示(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 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错误。

谢谢,维卡斯库马尔

4

5 回答 5

7

感谢您查看此内容,我刚刚意识到 SiteEdit 正在完成它的工作。所有 SiteEdit 标记 div 都具有相同的绝对位置,因此无论我将鼠标悬停在哪里,div 都会显示在顶部。

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

谢谢,维卡斯库马尔

于 2012-07-13T13:15:32.197 回答
5

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

因此,在您的循环中,您应该输出如下内容:

<div>
    <xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>
    <!-- output the content here -->
</div>
于 2012-07-12T15:01:27.577 回答
2

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

我假设您只是出于简洁的考虑而从您的问题中省略了设置注释,对吗?

你有没有机会给我们整个 HTML?当然,请删除任何敏感内容,但请确认您在这样做后仍然存在问题。

于 2012-07-13T11:24:38.377 回答
1

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

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

于 2012-07-13T14:25:25.680 回答
1

您确定用户有权访问所有组件吗?它们都存在吗

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

在该请求的正文(即发送到服务器的部分)中,您将找到 SiteEdit 要求的所有组件。因此,如果这没有涵盖您的所有组件,它就会以某种方式在 HTML 中找不到它们。

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

于 2012-07-13T12:41:02.357 回答