获取/设置块上的列表字段

时间:2018-09-18 13:56:33

标签: piranha-cms

这是我在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; }
}

如何从经理那里查看列表?

1 个答案:

答案 0 :(得分:0)

对于Blocks,此方法略有不同,但是不幸的是,该文档在此方面不是最新的。要创建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实际上也是一个块。这意味着,如果您想要对所有项目均有效的全局字段,例如背景色,则也可以将字段添加到块组中。如果要执行此操作,则需要在UseCustomView = true属性中添加BlockGroupType,并在处理全局字段时为Block Group提供EditorTemplate。
  2. BlockType属性中,我添加了IsUnlisted = true。这意味着,SliderItemBlock仅在将项目添加到SliderGroup时才可见,而在常规页面流中添加块时则不可见。
  3. 您可以为一个组指定多个BlockItemType属性,这将使您可以使用支持不同类型项目的滑块。如果您没有向组添加任何BlockItemType属性,则所有块类型都可以添加到组内部。
  4. 别忘了像普通块一样,需要注册块组。

最诚挚的问候

Håkan