作为ContentArea的一部分的本地块

Preambula

[ContentType(...)]
public abstract class _BaseSitePage : PageData { ... }

[ContentType(...)]
public abstract class _ContentPage : _BaseSitePage
{
    [Display(Name = "Content 1", GroupName = SystemTabNames.Content, Order = 4)]
    public virtual ContentArea Content1 { get; set; }  
}

public abstract class _FixedBodyLayoutPage : _ContentPage
{
    [Display(Name = "Body", GroupName = SystemTabNames.Content, Order = 100)]
    public virtual ThreeColumnRowBlock Body{ get; set; }
}

在创建_FixedBodyLayoutPage的实例期间,我想将本地块ThreeColumnRowBlockContent1作为预定义块放入Content1中。 另外我想在编辑页面上显示ThreeColumnRowBlock实例的唯一属性并隐藏Content1

[Editable(false), ScaffoldColumn(false)]
public override ContentArea Content1
{
  get { return this.GetPropertyValue(x => base.Content1); }
  set { this.SetPropertyValue(x => base.Content1, value); }
}

问题是:我找不到任何合适的方法在Content1内容区域内注册ThreeColumnRowBlock实例。 API需要ContentReference,但从我看到的本地块没有它。

部分找到解决方案:而不是本地块可以使用共享块。

但之后我无法在没有深度导航的情况下编辑编辑页面上的属性。 我想避免很多。 所有这些嵌套都打破了CMS的概念,更集中于内容而不是对象的层次结构。

是否有可能以某种方式将本地块绑定到共享块? 或强制episerver在页面编辑器内显示共享块属性?

我也尝试实现get / set,它提取共享块的实例并返回它而不是本地块。 但是这并不能欺骗暴虐者。 编辑页面显示来自错误实例的数据。

链接地址: http://www.djcxy.com/p/68875.html

上一篇: Local Block as a part of the ContentArea

下一篇: page editing blue borders for blocks in other languages