Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Prevent "home/" from being deleted or renamed


3 Posts   1113 Views


Community Member, 197 Posts

25 August 2010 at 12:17am

If the URLSegment of a page is "home/" I want to:

1.) prevent the page from being deleted
2.) prevent the URLSegment from being changed to anything besides "home/"


Community Member, 271 Posts

25 August 2010 at 12:53am

This is how I setup my homepage so it prevents renaming URLSegment, prevents deleting by non admins and force to be the first page in the SiteTree.


class HomePage extends Page{

   static $icon = 'axyrpack/images/icons/home';
   static $singular_name    = 'HomePage';
   static $plural_name    = 'HomePages';
   function canCreate() {
      return !DataObject::get_one($this->class);
   function canDelete() {   
      return Permission::check("ADMIN");

   function populateDefaults(){
   function onBeforeWrite () {
         $this->ParentID         = 0;
         $this->Sort          = 0;
         if(Object::has_extension('SiteTree','Translatable') && $this->Locale != Translatable::default_locale()) {
            $parts = explode('_',$this->Locale);
            $this->URLSegment       = 'home-'.$parts[0];
         } else {
            $this->URLSegment       = 'home';   
   function getCMSFields() {
      $fields = parent::getCMSFields();
      $fields->addFieldToTab("Root.Content.Metadata",new HiddenField('ClassName', 'ClassName'));
      $fields->addFieldToTab("Root.Content.Metadata",new HiddenField('URLSegment', 'URLSegment'));
      $fields->removeFieldsFromTab("Root.Content.Metadata", array('URL'));
      return $fields;   

class HomePage_Controller extends Page_Controller {
   function init(){


Community Member, 4 Posts

5 October 2010 at 1:33am

Thank you for this solution. Works perfect.