Piranha CMS:内容类型的基类

Piranha CMS: base class for content types

提问人:vladver 提问时间:12/17/2021 最后编辑:vladver 更新时间:6/3/2022 访问量:129

问:

我有几种类型的页面。但它们具有相同的设置区域。 问题如下。是否可以为继承组织定义具有公共区域的基类?以免在不同的类中手动定义相同的事物。

没有人想过吗?假设我有 4 种内容类型的页面。但是,例如,出于某种目的,它们都有一个 StringField。现在,必须在每个页面类中声明此字段,而不是为所有这些类型创建基类。Piranha 使用中间 GenericPage 类来组织继承。我不明白如何实现内容类型的基类。或者我不知道什么。

C# net-6.0 食人鱼-cms

评论


答:

0赞 Frederick 6/3/2022 #1

您可以只使用普通的 c# 继承。

我的基类

public class PageBase : Page<PageBase>
{
    public class CoverRegion
    {
        [Field]
        public StringField CoverText { get; set; }
        [Field]
        public ImageField CoverImg { get; set; }
    }
    
    [Region]
    public CoverRegion Cover { get; set; }

}

然后是继承的类

[PageType(Title = "Inherited Content")]
[ContentTypeRoute(Title = "Default", Route = "page-content")]
public class PageContent : PageBase
{
    [Region]
    public StringField Header { get; set; }
}

请记住,一个区域不能只包含一个属性,必须包含多个属性。如果只有一个属性,则在属性上设置区域属性,而不是字段