Как сделать статически связанный рендеринг редактируемым с помощью Experience Editor (Sitecore MVC)

Так что у меня есть представление макета в Sitecore Mvc, это представление содержит рендеринг контроллера, который использует навигацию в верхнем и нижнем колонтитулах. Пример:

@Html.Sitecore().Rendering("/sitecore/layout/renderings/some_rendering")

Это определяет рендеринг контроллера, который я определил в Sitecore. Это прекрасно работает, кроме случаев, когда я в редакторе опыта. Это не дает мне возможность выбрать этот рендеринг. Если я создам метку-заполнитель и затем динамически определяю эти элементы навигации для этой метки-заполнителя через Sitecore, то могу, но эти навигационные элементы существуют на каждой странице этого макета, поэтому я бы хотел, чтобы они размещались статически вместо использования метки-заполнителя, но я бы хотел все еще хотелось бы, чтобы пользователь мог выбирать элемент навигации в редакторе опыта (поэтому я могу создать пользовательскую команду для взаимодействия с этой навигацией, такую ​​как создание новых ссылок и т. д.).

У кого-нибудь есть идея, которая поможет мне достичь этого?

2 ответа

Использование Edit Frame для этого и создать Custom Edit Frame Button для таких операций, как добавление нового элемента в навигацию.

И не забудьте передать идентификатор источника данных или путь в качестве второго параметра Html.Sitecore().Rendering() метод:

@Html.Sitecore().Rendering("/sitecore/layout/renderings/some_rendering", new { DataSource = "{some-id-or-path}" })

Вот набор сообщений в блоге, которые могут помочь вам понять, как Edit Frames и как их добавить в решение Sitecore MVC:

  1. https://visionsincode.wordpress.com/2015/01/08/how-to-use-editframe-in-sitecore-mvc/
  2. https://www.cmsbestpractices.com/how-to-properly-use-sitecore-edit-frames/
  3. https://briancaos.wordpress.com/2011/11/28/using-sitecore-editframe-in-pageedit/

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

Вы можете попробовать использовать виды GlassMapper и статически наследовать вид из GlassView. Тогда вы сможете использовать редактируемый метод для визуализации поля.

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

Вместо внедрения рендеринга с помощью метода Rendering вы должны использовать стандартный MVC RenderPartial.

Я использовал этот подход в одном из проектов, над которым я работал, и это сработало.

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