2016-09-01 3 views
1

Я собираюсь создать блок для создания таблиц контента в Episerver.Типы вложенных блоков в Episerver

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

Если я создаю тип блока, который называется TableBlock, а другой - TableRowBlock, они будут видимыми, когда редактор добавит новый блок.

Поскольку TableRowBlock имеет смысл только в TableBlock, я хотел бы, чтобы скрыть это так, что это видно только при добавлении блока к ContentArea свойству TableBlock.

Как это сделать?

ответ

0

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

Однако, вы можете:

  1. Добавить атрибут [AllowedContentTypes] к вашему ContentArea недвижимости для TableBlock, а также указать тип TableRowBlock в качестве разрешенного типа. Таким образом, редактору не придется выбирать тип блока при нажатии «Добавить новый блок» в редакторе области содержимого.
  2. Настройка, какой тип (ы) содержание предлагается, когда новое содержание создается путем создания собственных IContentTypeAdvisor, который предложил бы TableRowBlock когда TableBlock редактируется:

[ServiceConfiguration(typeof(IContentTypeAdvisor))] public class ContentTypeAdvisor : IContentTypeAdvisor { public IEnumerable<int> GetSuggestions(IContent parent, bool contentFolder, IEnumerable<string> requestedTypes) { // Suggest relevant content types } }

Полный пример available here.

+0

Я вижу! Знаете ли вы, есть ли другой предпочтительный способ сделать список с динамической длиной, кроме использования типа contentarea? – theva

+0

Вы можете посмотреть API-интерфейс PropertyList. Он все еще в бета-версии, но я думаю, что он работает достаточно хорошо: http://world.episerver.com/blogs/Per-Magne-Skuseth/Dates/2015/11/trying-out-propertylistt/ –

Смежные вопросы