5

Je jouais avec des espaces réservés dynamiques et j'ai été frappé par un concept de pré-remplissage.Il existe un moyen de sélectionner un rendu par défaut pour un de mes espaces réservés "dialogue dans l'éditeur d'expérience ??Sitecore 8: Remplir automatiquement un espace réservé par un rendu par défaut

Scénario: J'ai un rendu appelé "PageHead" qui a trois rendus. L'un d'entre eux est un espace réservé "PageTeaserPh" qui permet actuellement deux rendus: l'un est "PageTeaser" et le second "PageTeaserWithImage". Je veux que l'espace réservé "PageTeaserPh" ait toujours le rendu sélectionné comme "PageTeaser" et donc éviter le dialogue "Sélectionner le rendu".

J'ai fait quelques devoirs et je me demandais si cela est quelque chose lié à valeurs standard (on peut avoir au niveau du modèle, pas sûr pour les rendus cependant) et aussi je l'ai entendu parler de modèle commande notion (pas -profondeur).

Toute aide a été appréciée.

Répondre

1

Vous pouvez affecter des rendus aux valeurs standard des modèles, chaque nouvel élément ayant alors votre rendu PageTeaser.

Si vous souhaitez automatiser ce processus, jetez un coup d'œil au pipeline <mvc.getXmlBasedLayoutDefinition>, nous sommes injectés des rendus courants en prolongeant ce pipeline.

Mise à jour

J'ai trouvé quelques exemples de code et des postes de blog qui devrait aider à vous orienter dans la bonne direction pour manipuler les détails de mise en page.

public void AddSublayoutToItem(string itemId, string sublayoutId) 
{ 
    using (new Sitecore.SecurityModel.SecurityDisabler()) 
    { 
     if (Sitecore.Data.ID.IsID(itemId) && Sitecore.Data.ID.IsID(sublayoutId)) 
     { 
      //Get the master database and get the item on which you want to add sublayout 
      Database masterDatabase = Database.GetDatabase("master"); 
      Item item = masterDatabase.GetItem(Sitecore.Data.ID.Parse(itemId)); 

      // Or you can also get Sitecore Item from Context Database as per your requirement 
      // Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId)); 

      if (item != null) 
      { 
       // Get the layout definitions and the device definition 
       LayoutField layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]); 
       LayoutDefinition layoutDefinition = LayoutDefinition.Parse(layoutField.Value); 
       DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString()); 

       //Create a RenderingDefinition and add the reference of sublayout or rendering 
       RenderingDefinition renderingDefinition = new RenderingDefinition(); 
       renderingDefinition.ItemID = sublayoutId; 
       //Set placeholder where the rendering should be displayed 
       renderingDefinition.Placeholder = "content"; 
       // Set the datasource of sublayout, if any 
       renderingDefinition.Datasource = "{24240FF2-B4AA-4EB2-B0A4-63E027934C38}"; 

       // you can also set datasource of sublayout using Sitecore Path 
       // renderingDefinition.Datasource = "/sitecore/content/Home/Books"; 

       //Add the RenderingReference to the DeviceDefinition 
       deviceDefinition.AddRendering(renderingDefinition); 

       // Save the layout changes 
       item.Editing.BeginEdit(); 
       layoutField.Value = layoutDefinition.ToXml(); ; 
       item.Editing.EndEdit(); 
      } 
     } 
    } 
} 

Extrait d'ici - http://www.bugdebugzone.com/2014/06/how-to-add-sublayout-to-sitecore-item.html

également deux autres blogs sur le sujet

+0

Tout ce que j'ai est un espace réservé pageteaserPh et un sublayout de pagehead. Vous ne savez pas comment mettre en œuvre ce que vous dites? –