Get/Set 块上的列表字段

Get/Set List Field on Blocks

这个在我的 class 在 Models.Regions

public class Slider
{
    [Field]
    public StringField  Title       { get; set; }
    [Field]
    public TextField    Description { get; set; }
    [Field]
    public ImageField   Background  { get; set; }
    [Field(Title = "Text on Button")]
    public StringField  NameButton  { get; set; }
    [Field]
    public StringField  Link        { get; set; }
}

在 Models.Blocks 中,我制作了一个名为 SliderBlock.cs 的块,我需要插入一个滑块列表

[BlockType(Name = "Slider", Category = "Content")]
public class SliderBlock : Block
{
    public List<Models.Regions.Slider> Sliders { get; set; }
}

如何查看管理员的列表?

块的方法略有不同,不幸的是,这方面的文档不是最新的。要创建 Block 列表,您可以使用 BlockGroup,对于接受单一类型元素的滑块,代码可以是:

[BlockGroupType(Name = "Slider", Category = "Content")]
[BlockItemType(Type = typeof(SliderItemBlock))]
public class SliderGroup : BlockGroup
{
}


[BlockType(Name = "Slider Item", Category = "Content", IsUnlisted = true)]
public class SliderItemBlock : Block
{
    [Field]
    public StringField Title { get; set; }

    [Field]
    public TextField Description { get; set; }

    [Field]
    public ImageField Background { get; set; }

    [Field(Title = "Text on Button")]
    public StringField NameButton { get; set; }

    [Field]
    public StringField Link { get; set; }
}

关于示例代码的一些注释。

  1. 如您所见,SliderGroup 实际上也是一个 Block。这意味着如果您想要对所有项目都有效的全局字段,您也可以将字段添加到块组,例如 背景颜色 。如果你想这样做,你需要将 UseCustomView = true 添加到 BlockGroupType 属性,并在处理全局字段时为块组提供一个 EditorTemplate。
  2. BlockType 属性中我添加了 IsUnlisted = true。这意味着 SliderItemBlock 只有 在将项目添加到 SliderGroup 时可见,而不是在将块添加到常规页面流时可见。
  3. 您可以为一个组指定多个 BlockItemType 属性,这将使您有可能拥有支持不同类型项目的滑块。如果您不向组中添加任何 BlockItemType 属性 所有 块类型都可以添加到组中。
  4. 不要忘记块组需要注册,就像普通块一样。

2019-09-26 更新

我们更新了文档以包含有关如何创建自定义块组的部分,您可以在此处阅读:

http://piranhacms.org/docs/extensions/custom-block-groups

此致

哈坎