2016-08-04 12 views
2

Was ist die einfachste und bequemste Möglichkeit, CMS-Benutzer daran zu hindern, Level 3-Unterseiten zu erstellen?SilverStripe schränken level-3 untergeordnete Seiten ein

Ich habe schon versucht, diese in 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; 
    } 

} 

Mit dieser Funktion habe ich noch Kind Seiten weit unten den Baum erstellen, so dass er sich ändern allowed_children nicht

Antwort

4

Sie überschreiben können allowedChildren Funktion des Silvers .

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

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

Damit Sie brauchen nicht die $allowed_children Eigenschaft festlegen.

+0

Funktioniert perfekt mit '$ this-> Level (2)' – Faloude

Verwandte Themen