動的コンポーネント プレゼンテーションの発行を通じて動的に生成されるメニューを持つアプリケーションがあります。menu.xml は、構造グループに基づくコンポーネント テンプレートによって書き出されます。このコンポーネント テンプレートは、構造グループが発行されるたびにイベント システムによってトリガーされます。が公開されています。
このセットアップは、Tridion 2009 から Tridion 2011 にアップグレードするまで正常に機能していました。しかし、アップグレード以降、メニューは動的に公開されておらず、構造グループに変更があるたびにメニュー コンポーネント テンプレートを再公開する必要があります。イベントシステムを確認しましたが、すべて問題ありません。さらに、このメニュー コンポーネント テンプレートの再公開は、他のいくつかのページ メニューで問題を引き起こします。
デバッグを行ったところ (コンポーネント テンプレートが作業中の pageURI をいつでも書き出せるようにしました)、書き出されたページ URI が間違っていることがわかりました。
以下は、実行された手順と到達した結論です。
エラーのあるページはすべてチェック済みです。DCP タグには、JSP コードで設定された正しい属性があります
追加の TRACE ステートメントが Tridion タグ ライブラリに追加されました。これにより、次のことが確認されました。
- XSLT はファイルシステムから正しく取得されました
- キャッシュされたメニューがキャッシュから正しく取得されました
XSLT は提供された変数で正しく変換されました
XSLT 属性を HTML に書き出すと、XSLT プロセッサに間違ったパラメータが提供されていることがわかります。
したがって、問題は次のイベントに限定されていると安全に結論付けることができます。XSL プロセッサが正しくないページ ID で呼び出されています。最も可能性の高い原因は、動的コンポーネント プレゼンテーション (DCP) の Java コードの同時実行の問題であり、DCP が群がり、現在のオブジェクトを使用しているページが混乱し始めます。
また、このような場合、それを修正するために何ができるでしょうか。
どんな情報でも役に立ちます。前もって感謝します!
よろしく、
キールタナ TS
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" />
ただし、Web ページのソースを表示すると、ページ URI (ページ URI を html ページに書き出したもの) が次のようにめちゃくちゃになっていることがわかります。
<div id="middle" class="rightcolumn">
これによりパンくずリストが生成され、正しい pageURI ではなく別の pageURI が取得されます。