2011年Tridion动态菜单中的问题

2011年Tridion动态菜单中的问题,tridion,tridion-2011,tridion-content-delivery,tridion2009,Tridion,Tridion 2011,Tridion Content Delivery,Tridion2009,我们有一个应用程序,它通过发布动态组件演示文稿动态生成菜单。一个基于结构组的组件模板会写出一个menu.xml,并且每当发布结构组时,该组件模板会通过事件系统触发以发布 在从Tridion 2009升级到Tridion 2011之前,此设置一直运行良好。但自升级以来,菜单不会动态发布,每次结构组发生更改时,都需要重新发布菜单组件模板。我们检查了活动系统,那里一切正常。此外,重新发布菜单组件模板会在其他一些页面菜单中引发问题 在进行一些调试时(我们让组件模板随时写出它正在处理的页面URI),我们发

我们有一个应用程序,它通过发布动态组件演示文稿动态生成菜单。一个基于结构组的组件模板会写出一个menu.xml,并且每当发布结构组时,该组件模板会通过事件系统触发以发布

在从Tridion 2009升级到Tridion 2011之前,此设置一直运行良好。但自升级以来,菜单不会动态发布,每次结构组发生更改时,都需要重新发布菜单组件模板。我们检查了活动系统,那里一切正常。此外,重新发布菜单组件模板会在其他一些页面菜单中引发问题

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

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

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

  • 向Tridion标记库添加了其他跟踪语句,这证实了以下几点:

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

  • 通过将XSLT属性写入HTML,我们可以看到XSLT处理器被提供了错误的参数

因此,我可以有把握地得出结论,该问题与以下事件无关;正在使用不正确的页面id调用XSL处理器。最可能的原因是动态组件表示(DCP)java代码中的并发问题,其中DCP聚集并开始混淆使用当前对象的页面

如果是这样的话,我们可以做些什么来纠正它呢

任何信息都会有帮助。提前谢谢

问候,

Keirthana T S

2013年1月22日更新:

在进一步的调试中,我们发现这个问题在演示端(我们的演示服务器)重复出现,事件系统与页面上出现的错误菜单无关

也就是说,当我们查看从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" />

然而,当我们查看网页的源代码时,我们发现页面URI(我们将页面URI写到html页面)混乱不堪,如下所示: 为了



这会生成面包屑,我们会得到一个不同的页面URI,而不是正确的页面URI。

一些与发布相关的旧版(VB)事件在Tridion 2011中不起作用。这里有一个遗留事件适配器:。

我有点不明白问题到底发生在哪里,是在CMS服务器上发布时,还是在您所说的演示服务器上请求时?@Bart:问题是,当我们更改并发布结构组时,应自动发布的菜单组件模板未发布。手动重新发布解决了现有菜单问题,但有时会在其他页面中触发新错误。此外,事件系统代码也很好。我们已经检查过了,问题不在触发器中。我觉得XSLT处理器在动态组件表示发布过程中被tridion-dynamic-6.1.0.348.jar错误地输入了页面ID,因此菜单混淆了。@Keirthana,您对此有很多自定义逻辑,在没有看到代码的情况下,我们只能假设正在发生什么。请分享:1)相关事件系统代码,2)ct代码,3)XSLT菜单组件模板使用CM端关系,这可能与实际发布的内容不匹配。错误有可能来自未发布的页面吗?并发性问题并不存在于DCP本身——它只是存储中的一组内容,而是存在于模板(C#TOM.NET)代码中。我正试图按照Nick的要求在实时环境中访问代码。一旦我得到它,我就会更新。@Qurjin:谢谢,但是我们应用程序的现有事件系统代码似乎正在工作,因为动态组件演示文稿中的页面URI正在写入。那么,问题是否存在于事件触发的其他地方,如我的解释所示?你是说此DCP的渲染成功,但在部署过程中出现了故障?@Quirjin:是的。我们修改了DCP以写出页面URI,当我们查看页面的源代码时,虽然写入了页面URI,但它们是不正确的。因此,我怀疑XSLT转换是否正在进行,但参数是否正确?这可能吗?我们已经提出了SDL对此问题的支持票,甚至SDL也无法解释为什么会发生这种情况。我们的所有代码和配置详细信息已由SDL确认为正确。一旦这个问题得到解决,我将更新答案。谢谢大家的帮助。
<div id="middle" class="rightcolumn">