Sitecore XPバージョン9.2.0以降にアップグレードすると、パーソナライズ ルールが機能しなくなる場合があります。これは、以前にあった条件が削除され、新しいIDのアイテムに置き換えられているために発生します。この事象は下記のテーブルに記載された条件に基づいたパーソナライズ ルールで発生します:
アイテム名・パス | 旧アイテムID | 新アイテムID |
キャンペーン条件が設定されている /sitecore/system/Settings/Rules/Definitions/Elements/Visit/Campaign was Triggered |
{D379525C-4DE6-4738-89ED-60CC0B8F91E5} | {0290AA90-B948-4C8C-B576-F3C17F9DE389} |
毎週 /sitecore/system/Settings/Rules/Definitions/Elements/Date/Day of Week |
{1F15625B-8BDC-4FD2-8F0C-6EE2B8EF0389} | {C18B0900-ED61-47A8-AEF0-AD6D133512C8} |
デバイスの種類 |
{659CC5E0-6356-44DD-B562-6C590525121C} | {F563E8D0-1D8A-4744-BD90-3C8D7E483884} |
パターン条件あり /sitecore/system/Settings/Rules/Definitions/Elements/Visitor/Matches Pattern |
{E00DB4F0-B206-4544-AD90-25D201CFB62C} | {08A70C4F-93B5-409E-9967-3892AAEB3BC2} |
本事象を解決するには、次のいずれかの方法をご検討ください:
備考:破損したリンクごとに手順1~5を繰り返します。
// 該当するアイテムを全て収集し(全てのコンテンツ アイテムまたは特定テンプレートのアイテム)、各アイテムに対して下記のメソッドを使用します:
public void UpdateLayoutField(Item item) { bool isSharedLayoutFieldUpdated = false; foreach (var language in item.Languages) { Item itemInLanguage = _database.GetItem(item.ID, language); if (itemInLanguage.Versions.Count > 0) { foreach (Item itemVersion in itemInLanguage.Versions.GetVersions()) { foreach (Field f in itemVersion.Fields) { if (f.ID == FieldIDs.FinalLayoutField) { itemVersion.Editing.BeginEdit(); string fieldValue = Sitecore.Data.Fields.LayoutField.GetFieldValue(itemVersion.Fields[FieldIDs.FinalLayoutField]);
// 旧IDから新IDに置き換えるロジックを追加します
LayoutField.SetFieldValue(f, fieldValue); itemVersion.Editing.EndEdit(); } } if (!isSharedLayoutFieldUpdated) { foreach (Field f in itemVersion.Fields) { if (f.ID == FieldIDs.LayoutField) { itemVersion.Editing.BeginEdit(); string fieldValue = LayoutField.GetFieldValue(itemVersion.Fields[FieldIDs.LayoutField]); // 旧IDから新IDに置き換えるロジックを追加します
LayoutField.SetFieldValue(f, fieldValue); itemVersion.Editing.EndEdit(); isSharedLayoutFieldUpdated = true; } } } } } } }