2011年Tridion动态菜单中的问题

Kei*_*ana 8 tridion tridion2009 tridion-content-delivery tridion-2011

我们有一个应用程序,它通过发布动态组件表示动态生成菜单.menu.xml由基于Structure组的组件模板写出,这个组件模板通过事件系统触发,每当结构组发布时发表.

这个设置工作正常,直到Tridion 2011从Tridion 2009升级.但是自升级以来,菜单不会动态发布,并且每次结构组发生更改时都需要重新发布菜单组件模板.我们检查了事件系统,一切都很好.此外,这种菜单组件模板的重新发布会触发一些其他页面菜单中的问题.

在进行一些调试时(我们使组件模板写出了它正在处理的pageURI),我们发现正在写出的页面URI是错误的.

以下是采取的步骤和得出的结论:

  • 所有错误的页面都已经过检查; DCP标记在JSP代码中设置了正确的属性

  • 其他TRACE语句已添加到Tridion标记库中,这证实了以下内容:

  • 从文件系统正确检索了XSLT
  • 从缓存中正确检索缓存的菜单
  • 使用提供的变量正确转换了XSLT

  • 通过将XSLT属性写出到HTML,我们看到XSLT处理器正在提供错误的参数.

因此,我可以安全地得出结论,该问题已被隔离到以下事件中; 正在使用不正确的页面ID调用XSL处理器.最可能的原因是由于动态组件表示(DCP)java代码中的并发问题,DCP被群集并且开始混淆哪个页面正在使用当前对象.

如果是这种情况,可以采取哪些措施来纠正它.

任何信息都会有帮助.提前致谢!

问候,

Keirthana TS

2013年1月22日更新:

在更多调试中,我们发现此问题在Presentation端(我们的演示服务器)上重复出现,并且事件系统与页面上出现的错误菜单无关.

也就是说,当我们查看从Tridion发布的jsp页面时,我们有顶层菜单,左侧菜单和面包屑的正确页面URI:

<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-103196" templateURI="tcm:57-23654-32"/><!-- privat-->
<div id="nav"><div class="wrapper">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23638" templateURI="tcm:57-23656-32" />
</div></div>
<div id="page" class="clear ">
<div id="content" class="clear">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23639" templateURI="tcm:57-23656-32" />
<div id="middle" class="rightcolumn">
<tridion:ComponentPresentation pageURI="tcm:57-186286-64" componentURI="tcm:57-23636" templateURI="tcm:57-23656-32" />
Run Code Online (Sandbox Code Playgroud)

但是,当我们查看网页的来源时,我们发现页面URI(我们将页面URI写入html页面)搞砸了如下:

<div id="middle" class="rightcolumn">
Run Code Online (Sandbox Code Playgroud)

生成面包屑我们得到一个不同的pageURI而不是正确的.

Qui*_*ijn 3

一些与发布相关的遗留 (VB) 事件在 Tridion 2011 中无法开箱即用。此处提供了一个遗留事件适配器:http://sdltridionworld.com/community/2011_extensions/LegacyEventAdapter.aspx