Преобразование макетов

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

Сопоставление макетов страниц веб-частей

Макет исходной страницы Макет целевой страницы
Схема, показывающая верхнюю строку столбца экрана. строка с 1 столбцом
верхний колонтитул, левый столбец, текст строка с 1 столбцом + строка с 2 столбцами слева
верхний колонтитул, правый столбец, текст строка с 1 столбцом + строка с 2 столбцами справа
верхний колонтитул, нижний колонтитул, 3 столбца строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом
верхний колонтитул, нижний колонтитул, 3 столбца, 4 строки строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом
верхний колонтитул, нижний колонтитул, 4 столбца строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом
левый столбец, верхний колонтитул, нижний колонтитул, верхняя строка строка с 1 столбцом + строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом
правый столбец, верхний колонтитул, нижний колонтитул, верхняя строка строка с 1 столбцом + строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом

Сопоставление макетов вики-страниц

Макет исходной страницы Макет целевой страницы
Снимок экрана с текстом одного столбца рядом со значком одного столбца. строка с 1 столбцом
2 столбца строка с 2 столбцами
2 столбца слева строка с 2 столбцами слева
верхний колонтитул, 2 столбца строка с 1 столбцом + строка с 2 столбцами
верхний колонтитул, 2 столбца, нижний колонтитул строка с 1 столбцом + строка с 2 столбцами + строка с 1 столбцом
3 столбца строка с 3 столбцами
верхний колонтитул, 3 столбца строка с 1 столбцом + строка с 3 столбцами
верхний колонтитул, 3 столбца, нижний колонтитул строка с 1 столбцом + строка с 3 столбцами + строка с 1 столбцом

Сопоставление макетов страниц публикации

Поскольку страницы публикации не имеют фиксированного макета, диспетчер макета по умолчанию, используемый преобразователем страниц публикации, работает по-разному: создает необходимые строки и столбцы на основе положения веб-частей, как определено в используемом файле сопоставления макетов страниц. Такое поведение макета определяется файлом сопоставления, использующим атрибут PageLayoutTemplate, для которого значением по умолчанию является AutoDetect. Если по какой-либо причине вас не устраивает автоматическое создание макета, можно также использовать описанные ранее типы макетов вики-страниц.

<PageLayout Name="WelcomeLinks" AssociatedContentType="" PageLayoutTemplate="AutoDetect" PageHeader="Custom">

Переопределение преобразования макета по умолчанию

Если по какой-то причине вы хотите преобразовать макеты другим способом, вы можете подключить собственный компонент преобразования макета, как показано в приведенном ниже фрагменте:

public class MyLayout : ILayoutTransformator
{
  private ClientSidePage page;

  public MyLayout(ClientSidePage page)
  {
    this.page = page;
  }

  public void Transform(PageLayout layout)
  {
    // custom layout transformation...add sections to the target page based upon the recieved page layout
    switch (layout)
    {
        case PageLayout.Wiki_OneColumn:
        case PageLayout.WebPart_FullPageVertical:
        case PageLayout.Wiki_Custom:
        case PageLayout.WebPart_Custom:
            {
                page.AddSection(CanvasSectionTemplate.OneColumn, 1);
                return;
            }
        // add more incoming layouts...
        default:
            {
                page.AddSection(CanvasSectionTemplate.OneColumn, 1);
                return;
            }
    }
  }
}

ILayoutTransformator layoutOverride(ClientSidePage cp)
{
    return new MyLayout();
}

// Now use the custom layout transformator
PageTransformationInformation pti = new PageTransformationInformation(page)
{
    // If target page exists, then overwrite it
    Overwrite = true,
    // Callout to your custom layout handler
    LayoutTransformatorOverride = layoutOverride,
};

// Transform the page using the custom layout handled hooked up
pageTransformator.Transform(pti);