2012-02-23 15 views
1

私はコードを投稿できないので、私はこれを理論的な質問として尋ねていますが、シナリオを与えています。なぜサイトコアープレゼンテーションコンポーネントがドメインに応じて異なる出力を生成するのでしょうか?

私は、最新のニュースや最新のイベントをリストアップするために、いくつかのXSLTを統計的にバインドする「ニュースルーム」サブレイアウトを持っています。サブレイアウトはニュースルームアイテムで使用され、イベントやニュースアイテムはその子孫です(直接的な子アイテムではありませんが、アイテムを分類して日付を付けるためのフォルダがいくつかあります)。

サブアウトアウトは、私たちのソリューションで約10サイトで問題なく使用されています。各サイトはメインサイトのクローンで、追加の言語バージョンが追加されています。日本語、中国語、ロシア語、ポーランド語、チェコ語のサイトでは、これを成功裏に使用しました。

しかし、最近のクローン(トルコ語)では、イベントやニュースリストにアイテムが表示されません。アイテムは存在し、公開され、個別に閲覧されたときには期待通りに表示されます。

ニュースルームの項目のプレゼンテーションの詳細は、他のすべてのニュースルームの項目と同じです。

newsoomアイテム自体は、別のドメインのコンテキストで表示されると、正しく表示されます。

すなわち

www.mysite.com/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR 

培養に従ってフォーマット日付を含め、問題なくリストを示しているが、

www.mysite.com.tr/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR 

は、空のリストを示しています。言語は

英語(クローンの元の言語)に切り替えられたほとんどすべてのトルコサイトの正常に動作している場合

まったく同じ問題が発生します。

プレゼンテーションコンポーネントのどれもキャッシュ可能とマークされていません。プレゼンテーションコンポーネントの

なし(すなわち、それらはすべて現在のアイテム/子孫軸を使用)指定されたデータソースを持っていない

は、この問題の可能原因は何であり、どのように私はそれらをテストすることができますか?

編集: マークUrsinoの場合 これはサイト定義です(わずかに架空のものです)。私はいくつかのデバッグはアイテムがトルコの文脈で見たときのXSLTテンプレートを一致していないことを示している

<site name="www.mysite.com.tr" patch:after="site[@name='www.mysite.com.au']" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/CloneData/TurkishClone" hostName="www.mysite.com.tr" startItem="/Turkey_Home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" language="tr-TR" /> 

... web.configファイルのずっといることを投稿することはできません。

<xsl:value-of select="count(./descendant::item[@template='newsitem' and @id!=$topNewsId and sc:fld('__created',.)])"/> 

それは他のドメインから見て同じ項目に一致します。 これは使用デバッグの試合である(選択は私達が私達のために、それぞれに使用するものです)。

デバッグ出力では、トルコ語サイトではがnewsitem(私は間違っています)の代わりに考えられます。

私はトルコ語ドメインを介して他のサイトのニュースルームを見てもテストしました。問題は同じです。 イベントアイテムテンプレートに基づくアイテムと同じ問題があり、明らかにイメージスポットテンプレートがあります。

+1

を含む文字列と文化に関する

ネット情報、あなたのコンフィギュレーションを提供することはできますか? –

+0

@ MarkUrsino - 更新を参照してください。それは興味深いものです。データはすべて正しいと思われますが、サイトのコンテキストはそれを処理できません。言語バージョン間でエラーが発生すると、別のサイトのコンテキストで同じコンポーネントによってデータが正しく表示されます。他のサイトのデータは、トルコのサイトのコンテキストでは表示されません。 のすべてのサイトは同じ方法で作成され、名前、パス、ホスト名、言語のみが異なります。 –

+1

うん、非常に面白い。おそらく、これはSitecoreサポート(http://support.sitecore.net)に提出すると良いでしょう。 'web.config'、ログ、ツリー構造のスクリーンショットを提供してください。 '/ sitecore/admin/showconfig.aspx'を実行すると、あなたのパッチファイルごとにconfigがレンダリングされるのでしょうか?あるいは' 'セクションに何かがありますか? –

答えて

1

私自身の質問に答える。

SitecoreのXSLT拡張によるXSLTの比較に使用するため、Sitecoreのテンプレート名は小文字に変換されます。

この小文字の変換は、文化的に不変ではありません。アッパーケースのトルコ、強制下部ケーシング内Iı

サイトコアは、我々が「として6.5 rev.110419

http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/ChangeLog.aspx

のようToLowerInvariant()とサイトコアAPIでToLower()で呼び出しを置き換えた下部ケースを与えます6.5へのアップグレードはまだありませんが、今のところXSLTの名前ではなくテンプレートIDを使用しています。特に「トルコのIの問題」 http://msdn.microsoft.com/en-us/library/ms973919.aspx

1

あなたのイベントリスターとxslts内で、言語、文化、コンテキストアイテムのID、lang、バージョンを印刷しようとしましたか?

予期しないことがあれば、Reflector Proの外部アセンブリのデバッグを使用して、Sitecoreパイプラインリゾルバの一部にステップインすることができます。

+0

私は文化の問題ではありませんが、それは問題を浮き彫りにしていたと思います。私は上記の自分の質問に答えました。それはSitecore XSLTの拡張機能で、文化的不変性を保証せずにケーシングを下げると問題が発生しました。 –

関連する問題