Freigeben über


Grundlegendes zur Layouttransformation

Jede Quellseite, die transformiert wird, weist ein bestimmtes Layout auf, in der Regel eines der vordefinierten Layouts, die einsatzbereit von SharePoint angeboten werden. Wenn eine Seite in eine moderne Seite transformiert wird, überschreibt die moderne Seite das Layout der Quellseite. Die modernen Zielseiten haben andere Layoutfunktionen, es ist daher wichtig zu verstehen, wie das Layout der Quellseite dem Layout der Zielseite zugeordnet wird.

Layoutzuordnung der Webpartseite

Layout der Quellseite Layout der Zielseite
Diagramm, das die oberste Spaltenreihe eines Bildschirms zeigt. 1 Spaltenzeile
Kopfzeile, linke Spalte, Textkörper 1 Spaltenzeile + 2 Spaltenzeilen links
Kopfzeile, rechte Spalte, Textkörper 1 Spaltenzeile + 2 Spaltenzeilen rechts
Kopfzeile, Fußzeile, 3 Spalten 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile
Kopfzeile, Fußzeile, 3 Spalten, 4 Zeilen 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile
Kopfzeile, Fußzeile, 4 Spalten 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile
linke Spalte, Kopfzeile, Fußzeile, oberste Zeile 1 Spaltenzeile + 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile
rechte Spalte, Kopfzeile, Fußzeile, oberste Zeile 1 Spaltenzeile + 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile

Layoutzuordnung einer Wiki-Seite

Layout der Quellseite Layout der Zielseite
Screenshot des einspaltigen Textes neben einem einspaltigen Symbol. 1 Spaltenzeile
2 Spalten 2 Spaltenzeilen
2 Spalten links 2 Spaltenzeilen links
Kopfzeile, 2 Spalten 1 Spaltenzeile + 2 Spaltenzeilen
Kopfzeile, 2 Spalten, Fußzeile 1 Spaltenzeile + 2 Spaltenzeilen + 1 Spaltenzeile
3 Spalten 3 Spaltenzeilen
Kopfzeile, 3 Spalten 1 Spaltenzeile + 3 Spaltenzeilen
Kopfzeile, 3 Spalten, Fußzeile 1 Spaltenzeile + 3 Spaltenzeilen + 1 Spaltenzeile

Veröffentlichung einer Seitenlayout-Zuordnung

Da Veröffentlichungsseiten kein festes Layout haben, funktioniert die vom Standard-Layout-Manager verwendete Transformation der Veröffentlichungsseite anders: sie generiert die erforderlichen Zeilen und Spalten basierend auf der Position der Webparts wie in der verwendeten Seitenlayout-Zuordnungsdatei definiert. Dieses Layoutverhalten wird in der Zuordnungsdatei mit dem PageLayoutTemplate-Attribut definiert, dessen Wert standardmäßig AutoDetect lautet. Wenn Ihnen aus irgendeinem Grund die automatische Layouterstellung nicht gefällt, können Sie die zuvor beschriebenen Layouttypen der Wiki-Seite verwenden.

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

Überschreiben der Standardlayouttransformation

Wenn Sie aus irgendeinem Grund die Layouts anders transformieren möchten, können Sie in Ihre eigene Layouttransformationskomponente verwenden, wie im folgenden Codeausschnitt gezeigt:

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);