2017-01-27 5 views
0

basierend auf einer einzelnen Seitenansicht Ich bin auf der Suche nach meiner Inhaltsstruktur, um die Seite dynamisch zu erstellen.Sitecore 7 Hinzufügen eines Unterlayouts dynamisch basierend auf der Baumstruktur

So ein Beispiel: mit einem untergeordneten Element der GALLERY-Vorlage würde dies selbst Unterartikel mit der Vorlage GALLERY ITEM haben, die jedes der Bilder definiert, die in einem Karussell angezeigt werden; So kann ein Editor einfach mehrere Elemente hinzufügen und das Karussell wird entsprechend skaliert, anstatt feste Felder (Banner, Banner 2 usw.)

Derzeit habe ich ein Problem zu verstehen, wie mein Unterlayout, das die Galerien HTML definiert automatisch enthalten sein kann auf dieser Hauptseite, wenn diese Vorlage vorhanden ist.

Anstatt ein Editor das Sublayout manuell hinzufügen und eine Datenquelle zum Galerieknoten definieren zu müssen, würde ich die Hauptseite in der Baumstruktur durchlaufen und beobachten, dass es eine Vorlage für GALLERY gibt, die das Sublayout verwenden muss und fügen Sie es der Hauptseite hinzu Platzhalter

Auf diesem Prinzip wird die Seite selbst bauen, je nachdem, welche Elemente ein Editor der Seite hinzufügt.

Jeder Rat oder Beispielcode (mit Webforms) wird geschätzt; Zur Zeit muss ich Sublayouts manuell hinzufügen, was für Content Editors nicht intuitiv zu sein scheint.

Dank

Antwort

0

Wenn Sie richtig verwenden und die Seite/Experience Editor konfigurieren, Hinzufügen der Sublayouts und Datenquellen ein sehr intuitiver Prozess ist, und ermöglichen es Ihnen, die vollen Nutzen aus allen Funktionen und Möglichkeiten von Sitecores zu nehmen, insbesondere Personalisierung und A/B-Tests. Dies ist die empfohlene Vorgehensweise, der Sie folgen sollten.

Das heißt, wenn Sie mildernde Umstände haben, die Sie wirklich davon abhalten, gibt es eine ältere Technik namens "Presentation Inversion of Control", die Renderings von Elementen über den Inhaltsbaum verknüpft. Es war nützlich vor dem "Unified Page Editor" und den Datenquellen-Assistenten, die in Sitecore 6.4 erschienen. There are various approaches to this, aber das einfachste ist ein Sublayout/Web-Steuerelement, das Sie auf der Seite platzieren.

public partial class Gallery: System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     PageItem page = Sitecore.Context.Item; 
     //custom item contains logic for finding items to include 
     foreach (Item galleryItem in page.GalleryItems) 
     { 
      string strDataSource = galleryItem.ID.ToString(); 
      RenderingReference[] renderings = 
       galleryItem.Visualization.GetRenderings(Sitecore.Context.Device, false); 
      foreach (RenderingReference rendering in renderings) 
      { 
       rendering.Settings.DataSource = strDataSource; 
       this.Controls.Add(
        rendering.RenderingItem.GetControl(rendering.Settings)); 
      } 
     } 
    } 
} 

Aber wirklich, Sie sollten nur richtig implementieren, um den Seiteneditor:

Der folgende Code wurde durch seine auf Sitecore 7 nicht getestet.

+0

Danke für Ihren Rat; Seiteneditor war für uns in der Vergangenheit unzuverlässig - es speichert gerendertes Javascript aus dem DOM in Felder, Editoren können leicht Seiten durch versehentliches Ziehen von Elementen aufbrechen und agieren nicht immer stabil. Editoren bevorzugen den Inhaltseditor, da sie nur Inhalte bearbeiten und sich nicht mit Layout-Entscheidungen und den Problemen der Schnittstelle befassen - daher ein Ansatz zum automatischen Erstellen der Seite basierend auf Vorlage und Inhaltstyp. Wir sind auf SC7, also hat sich vielleicht die Benutzeroberfläche verbessert, aber manchmal wollen Redakteure nur Inhalte bearbeiten und nicht Webseitenlayouts entwerfen. Nochmals vielen Dank, – user3779703

+0

Seien Sie sich der Tatsache sehr bewusst, dass Sie mit einem solchen Ansatz den Einsatz von Personalisierung und A/B-Tests ausschließen. Unweigerlich werden Ihre Benutzer zurückkommen, die diese verwenden möchten und fragen, warum sie das nicht können (oft gesehen). – techphoria414

Verwandte Themen