Sitecore 8: автоматическое заполнение заполнителя при отображении по умолчанию

Я играл с динамическими заполнителями и был поражен концепцией предварительного заполнения. Есть ли способ выбрать рендеринг по умолчанию для одного из моих заполнителей, который позволит избежать диалога "выбрать рендеринг" в редакторе опыта?

Сценарий: у меня есть рендеринг под названием "PageHead", который имеет три рендеринга. Одним из них является заполнитель "PageTeaserPh", который в настоящее время допускает два рендеринга: один "PageTeaser" и второй "PageTeaserWithImage". Я хочу, чтобы заполнитель "PageTeaserPh" всегда выбирал рендеринг как "PageTeaser" и поэтому избегал диалогового окна "Выбор рендеринга".

Я сделал некоторую домашнюю работу, и мне было интересно, связано ли это со стандартными значениями (у нас это может быть на уровне шаблона; хотя мы не уверены в визуализации), а также я слышал о концепции шаблона команды (не всесторонне).

Любая помощь приветствуется.

1 ответ

Решение

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

Если вы хотите автоматизировать этот процесс, посмотрите на <mvc.getXmlBasedLayoutDefinition> конвейер, мы вводим общие рендеры, расширяя этот конвейер.

обновленный

Я нашел несколько примеров кода и постов в блоге, которые должны помочь вам в правильном направлении для манипулирования деталями макета.

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

Взято отсюда - http://www.bugdebugzone.com/2014/06/how-to-add-sublayout-to-sitecore-item.html

Также пара других блогов на тему

Другие вопросы по тегам