[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フィールドが共用としてチェックして、日付過ぎた条件の英語バージョンにて、アイテムファーバックを有効にしたことで解決しました。
念のため、サイトのルートより、アイテムファーバックを存在するアイテムをスクリプトで、すべて、有効になっていることを再確認しました。