Episerver 中的嵌套块类型
Nested block types in Episerver
我准备在 Episerver 中构建一个用于创建内容表的块。
我希望这个块有一个 ContentArea
,它又将只包含 TableRowBlock
类型的块(这样我就可以有任意数量的行)。
如果我创建一个名为 TableBlock
的块类型和另一个名为 TableRowBlock
的块类型,当编辑器添加新块时,它们都将可见。
因为 TableRowBlock
只在 TableBlock
中有意义,我想隐藏它,这样它只有在向 ContentArea
属性 添加块时才可见TableBlock
.
我该怎么做?
恐怕不支持开箱即用的问题。
但是,您可以:
- 为
TableBlock
添加 [AllowedContentTypes]
属性到 ContentArea
属性,并指定 TableRowBlock
类型为允许的类型。这样,在内容区域编辑器中单击 "Add new block" 时,编辑器就不必 select 阻止类型。
- 通过创建您自己的
IContentTypeAdvisor
自定义在创建新内容时建议的内容类型,当编辑 TableBlock
时会建议 TableRowBlock
:
[ServiceConfiguration(typeof(IContentTypeAdvisor))]
public class ContentTypeAdvisor : IContentTypeAdvisor
{
public IEnumerable<int> GetSuggestions(IContent parent, bool contentFolder, IEnumerable<string> requestedTypes)
{
// Suggest relevant content types
}
}
完整示例 available here.
我准备在 Episerver 中构建一个用于创建内容表的块。
我希望这个块有一个 ContentArea
,它又将只包含 TableRowBlock
类型的块(这样我就可以有任意数量的行)。
如果我创建一个名为 TableBlock
的块类型和另一个名为 TableRowBlock
的块类型,当编辑器添加新块时,它们都将可见。
因为 TableRowBlock
只在 TableBlock
中有意义,我想隐藏它,这样它只有在向 ContentArea
属性 添加块时才可见TableBlock
.
我该怎么做?
恐怕不支持开箱即用的问题。
但是,您可以:
- 为
TableBlock
添加[AllowedContentTypes]
属性到ContentArea
属性,并指定TableRowBlock
类型为允许的类型。这样,在内容区域编辑器中单击 "Add new block" 时,编辑器就不必 select 阻止类型。 - 通过创建您自己的
IContentTypeAdvisor
自定义在创建新内容时建议的内容类型,当编辑TableBlock
时会建议TableRowBlock
:
[ServiceConfiguration(typeof(IContentTypeAdvisor))]
public class ContentTypeAdvisor : IContentTypeAdvisor
{
public IEnumerable<int> GetSuggestions(IContent parent, bool contentFolder, IEnumerable<string> requestedTypes)
{
// Suggest relevant content types
}
}
完整示例 available here.