Sitecore Layout Delta Merge - PullRequest
       57

Sitecore Layout Delta Merge

0 голосов
/ 29 октября 2018

Каким-то образом синхронизация между элементами и шаблоном нарушена для большинства элементов. Если мы отбрасываем новые визуализации в стандартные значения шаблона, это не будет отражаться на всех элементах, и у нас будет много элементов, поэтому мы решили написать утилиту для синхронизации дельт макета .

Подход: 1 - получить Дельта из элемента и его стандартные значения 2 - Сбросить детали презентации элемента 3- Set Layout Delta

Я получаю дельту, как показано ниже

LayoutField layoutDestinationItem = destinationItem.Fields[Sitecore.FieldIDs.LayoutField];
XmlDeltas.GetDelta(layoutDestinationItem.Value, layoutStandardItem.Value)

Delta:

<r xmlns:p="p" xmlns:s="s" p:p="1"><d id="{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}"><r uid="{3E510D2E-BC34-43A7-BBB3-3CE913E0A3B7}"><p:d /></r><r uid="{FFCC413D-67CA-4DA1-BC09-A834A8328B6B}" p:after="*[1=2]" s:id="{9C734712-2F25-4A02-A468-2992B4EEA0F6}" s:ph="head" /><r uid="{79FC922A-87CD-4F24-8B45-808F91AA8F14}"><p:d /></r></d></r>

Стандартные значения:

<r xmlns:xsd="http://www.w3.org/2001/XMLSchema" ><d id="{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}" l="{0450FC97-4E1C-416A-B1D8-3D8F9D8504B8}"><r id="{86D366D2-C902-4444-A872-86C11A4019C1}" ph="header" uid="{4626A07D-4B6E-44D7-A66F-7EE6ED3D9EFE}" /><r id="{D58E531B-AAA5-49EC-9CE3-2584E29693E0}" ph="header" uid="{4F497EA9-7B75-4454-8A54-F6FDDA6FA801}" /><r id="{DC007F22-3B55-4174-BA75-99B72D385D27}" ph="mainnavigation" uid="{A52F5D02-3F8E-4E4E-811E-C51F13DA9649}" /><r id="{7BF3267F-9EEF-4140-95EB-1168147D0C4F}" ph="main" uid="{5DA4D11B-F4B3-48E4-9E7F-08F713BDF795}" /><r id="{B9B71E0B-7574-4770-9D24-3B62BBBA8CC7}" ph="breadcrumb" uid="{CF4D3698-0CB2-404A-8759-0D3C4FEB741B}" /><r id="{D5BD06B8-D04D-499B-813A-2E319AF34B31}" ph="footertop" uid="{2110C6C7-6BAC-4531-A253-DFEA2A657D90}" /><r id="{D3B8475A-3F82-41FD-A583-CC7F20099047}" ph="footerbottom" uid="{B5167FA9-11EE-4861-AD9B-2F29CC2C9D1B}" /><r ds="{68E5397B-3031-46B1-B13B-4FA575A7AE5E}" id="{F198B838-0367-4D23-8DA9-42132A92565B}" par="" ph="notifications" uid="{3E510D2E-BC34-43A7-BBB3-3CE913E0A3B7}" /><r id="{30C98E4E-B8E3-4ED0-8E01-BF060F528C1F}" ph="BanalanceInquiry" uid="{79FC922A-87CD-4F24-8B45-808F91AA8F14}" /></d></r>

но после применения дельты, как показано ниже, я получаю начальное значение элемента.

XmlDeltas.ApplyDelta(resetItemLayouts.Value, getDalta)

Выше Apply delta принимает значение поля dlta и стандартного макета, как указано выше, но после объединения удаляет последние два компонента (которые были недавно добавлены в стандартное значение шаблона, но не в элемент)

<r xmlns:xsd="http://www.w3.org/2001/XMLSchema" ><d id="{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}" l="{0450FC97-4E1C-416A-B1D8-3D8F9D8504B8}"><r id="{86D366D2-C902-4444-A872-86C11A4019C1}" ph="header" uid="{4626A07D-4B6E-44D7-A66F-7EE6ED3D9EFE}" /><r id="{D58E531B-AAA5-49EC-9CE3-2584E29693E0}" ph="header" uid="{4F497EA9-7B75-4454-8A54-F6FDDA6FA801}" /><r id="{DC007F22-3B55-4174-BA75-99B72D385D27}" ph="mainnavigation" uid="{A52F5D02-3F8E-4E4E-811E-C51F13DA9649}" /><r id="{7BF3267F-9EEF-4140-95EB-1168147D0C4F}" ph="main" uid="{5DA4D11B-F4B3-48E4-9E7F-08F713BDF795}" /><r id="{B9B71E0B-7574-4770-9D24-3B62BBBA8CC7}" ph="breadcrumb" uid="{CF4D3698-0CB2-404A-8759-0D3C4FEB741B}" /><r id="{D5BD06B8-D04D-499B-813A-2E319AF34B31}" ph="footertop" uid="{2110C6C7-6BAC-4531-A253-DFEA2A657D90}" /><r id="{D3B8475A-3F82-41FD-A583-CC7F20099047}" ph="footerbottom" uid="{B5167FA9-11EE-4861-AD9B-2F29CC2C9D1B}" /><r id="{9C734712-2F25-4A02-A468-2992B4EEA0F6}" ph="head" uid="{FFCC413D-67CA-4DA1-BC09-A834A8328B6B}" /></d></r>

Я обеспокоен тем, что ApplyDelta берет два XML-файла и, кажется, пытается объединиться, но не может объединиться правильно.

Sitecore Версия: Sitecore 8.1 rev. 160519

** Это происходит и в свежем случае.

Обновление: Если я установил только дельту по служебным или необработанным значениям, то он показывает старые визуализации, исключая новые визуализации, добавляемые в стандартное значение шаблона. Как это получить объединенные визуализации, если у нас есть только дельта, как указано выше, потому что, если только

Перемещено в Обмен стеками Sitecore

...