SilverStripe限制3级子页面

时间:2016-08-04 11:07:59

标签: php silverstripe

限制CMS用户创建3级子页面的最简单,最方便的方法是什么?

我已在class Page

中尝试过此操作
public function canHaveChild() {

    //Get SiteTree column value ParentID of this record
    $parentID = DataObject::get("SiteTree", "WHERE ID = '$this->ID'")->ParentID;

    //If parentID = 0, this is a root page, so it can have a childpage
    if($parentID == 0) {
        $this->allowed_children = array("Page", "BasicPage", "FormPage");
    } else {
        $this->allowed_children = false;
    }

}

使用此功能,我仍然可以在树下创建子页面,因此它不会更改allowed_children

1 个答案:

答案 0 :(得分:4)

您可以覆盖SilverStripe的allowedChildren功能。

class Page extends SiteTree
{
    public function allowedChildren()
    {
        if($this->Level(3))
            return [];

        return ['Page', 'BasicPage', 'FormPage'];
    }
}

使用此功能,您无需设置$allowed_children属性。