[Sitecore][Personalization]言語を追加した後、パーソナライズルールが機能しなくなりました.

検証環境:Sitecore 9.2.0

概要:

サイトコアのサイトを多言語対応として、中国語を追加しました。しかし、中国語のアイテムにて、既存のパーソナライズルールが動作しなくなりました。これはそのトラブルシューティングのメモ書きです。

中国語サイトを追加:

1.中国語を追加し、フォールバック言語を英語にセット。

2.中国語サイト設定を追加し、アイテムフォールバックを有効し、言語を中国語に設定。

3.Powershell スクリプを使って、テンプレートやアイテムのアイテムフォーバックをチェック。

IISにて中国語のサイトバインディングを追加すれば、中国語のサイトを表示されてことを確認。アイテムが中国語バージョンがないため、ファーバックで英語のバージョンとなり、既存のルールが動作すべきですしかんし、既存のパーソナライズルールが動作しなくなりました。 ここかれ、その問題を突き止めるまでに取った手順です。

既存のパーソナライズルールを使ってテストの設定:

1.簡単なテスト用アイテムを作成

2.簡単なレンダリングコントロールを作成し、パーソナライズルールがマッチした際にデータソースのアイテムを使用します。

3.既存の日付のルールを使用し、もし日付が過ぎたら、日付過ぎたデーターソースを使用します。過ぎていないなら、表示を隠します。

4.データーソースは両国語を用意します:

5.日付過ぎた場合として、期待している動作結果は

5-1、英語の場合:

5-2、中国語の場合:

ここで、中国語の場合中国語データソースが表示されませんでした。

トラブルシューティング

1.アイテムフォーバックのテックが有効になっていることを再度確認

2.ワークフローを確認し、アイテムプレビューできることを確認


3. 毎回テストを行う際に新しいIncognito ウィンドウを使用し、セッションなどのキャシューを確実にクリアします。

4. Log ファイルを確認し、エラーなどないかどうかを確認しましたが、関連しそうな情報がありませんでした。

5. ディフォルトの同じバージョンのサイトコアにて比較しましたが、問題の再現ができませんでした。

6. これまでのステップを行っても、問題がみつからず、Dllをディコンパイルして、関連するファイルをソリューションへ持ち込んでディバグを行いました。

ここでやっと問題発見!いくつかの問題が組み合わせた問題でした。まず、ConditionテンプレートのTypeフィールドが共用としてチェックしていなかった

そのため、日付過ぎた条件の英語バージョンにて、アイテムファーバックが有効していないため、中国語バージョン作成されたバージョンにて、ConditionのTypeフィールド空白となっていました。

この問題をConditionテンプレートのTypeフィールドが共用としてチェックして、日付過ぎた条件の英語バージョンにて、アイテムファーバックを有効にしたことで解決しました。

念のため、サイトのルートより、アイテムファーバックを存在するアイテムをスクリプトで、すべて、有効になっていることを再確認しました。