Sitecore XPインスタンスを8.2 Update-7にアップグレードすると、レイアウト デルタがp:before=""のみで構成されている場合、レンダリングの順序が変わる可能性があります。その結果、コンテンツがフロントエンド サイトに正しく表示されません。
以前のSitecore XPバージョン(8.1 Update-1以前)では、レイアウト デルタは、p:before=""属性のみを使用して上から下まで作成・処理されていました。
Sitecore XP 8.1 Update-2からSitecore XP 8.2 Update-6までは、レイアウト デルタは、以下の属性セットを使用して上から下まで作成・処理されていました:
Sitecore XP 8.2 Update-7(Sitecore 9.0 Update-2に統合)以降、関連する問題を修正する一環として、解析ロジックが変更されました。そのため、レイアウト デルタは、上記の属性セットを使用して逆の順序で解析されています。
この問題を解決するには、以下を実行してください:
//影響を受けるすべてのアイテム(すべてのコンテンツ アイテムまたは特定のテンプレートのアイテムである可能性があります)を収集し、アイテムごとに以下の方法を使用します:
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]);
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]);
LayoutField.SetFieldValue(f, fieldValue);
itemVersion.Editing.EndEdit();
isSharedLayoutFieldUpdated = true;
}
}
}
}
}
}
}