Sitecore 7 добавляет подслой динамически на основе древовидной структуры

Основываясь на одном просмотре страницы, я хочу, чтобы моя структура контента динамически создавала страницу.

В качестве примера: с дочерним элементом шаблона GALLERY он сам будет иметь подэлементы, использующие шаблон GALLERY ITEM, который определяет каждое из изображений, которые будут отображаться в карусели; таким образом, редактор может просто добавить несколько элементов, и карусель будет соответственно масштабироваться, а не иметь фиксированные поля (баннер, баннер 2 и т. д.)

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

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

По этому принципу страница будет создаваться самостоятельно в зависимости от того, какие элементы редактор добавляет на страницу.

Любой совет или пример кода (с использованием веб-форм) приветствуется; В настоящее время мне приходится вручную добавлять подслои, которые, по-видимому, не являются интуитивно понятными для редакторов контента для сборки страниц.

Спасибо

1 ответ

Решение

Если вы правильно используете и настраиваете Page/Experience Editor, добавление подуровней и источников данных является очень интуитивно понятным процессом и позволяет вам в полной мере воспользоваться всеми функциями и возможностями Sitecore, в частности персонализацией и A/B-тестированием. Это рекомендуемая практика, которой вы должны следовать.

Тем не менее, если у вас есть смягчающие обстоятельства, которые действительно мешают вам сделать это, существует более старая техника, называемая " инверсия представления", которая извлекает визуализации из элементов, связанных через дерево контента. Это было полезно до появления "единого редактора страниц" и мастеров источников данных, которые появились в Sitecore 6.4. Существуют различные подходы к этому, но самый простой - это подуровень / веб-элемент управления, который вы размещаете на странице.

Следующий код не был проверен на Sitecore 7:

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

Но на самом деле, вы должны просто правильно реализовать редактор страниц.

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