2016-08-04 6 views
2

CMSユーザーがレベル3の子ページを作成するのを制限する最も簡単で便利な方法は何ですか?私はこの機能によりclass PageSilverStripeがレベル3の子ページを制限する

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

答えて

4

を変更しないので、私はまだあなたがSilverStripeのallowedChildren機能を無効にすることができ、これまでツリーの下の子ページを作成することができます。

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

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

これで、$allowed_childrenプロパティを設定する必要はありません。

+0

'$ this-> Level(2)'を使って完全に動作します。 – Faloude

関連する問題