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

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

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

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

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


person Dylan Young    schedule 09.05.2016    source источник


Ответы (2)


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

И не забудьте передать Datarsource ID или Path в качестве второго параметра методу 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/

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

person Marek Musielak    schedule 09.05.2016

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

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

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

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

person Jack Spektor    schedule 09.05.2016