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.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Data Model Questions /

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

Problems with Object::useCustomClass

Go to End

5 Posts   5461 Views


Community Member, 5 Posts

8 January 2009 at 1:48pm


I am trying to override a function in the LeftAndMain class in the 'cms' module.

I have put the following in mysite/_config.php

Object::useCustomClass('LeftAndMain', 'CustomLeftAndMain');

I have extended the LeftAndMain class in CustomLeftAndMain class and have overridden the getSiteTreeFor() function but it has no effect.

Any help would be greatly appreciated.


Brian Sohn


Community Member, 712 Posts

9 January 2009 at 10:50am

Never tried that before, but see if this works:

Object::useCustomClass('LeftAndMain', 'CustomLeftAndMain', true);


Community Member, 5 Posts

10 January 2009 at 7:52am

Hey Hamish,

Thanks for the feedback. I have tried the 'true' flag and it still doesn't work. If you come across anything give me a shout. I'll keep looking back to this thread.



Community Member, 5 Posts

10 January 2009 at 12:25pm

I was looking through the Object class and it looks like only classes that are created by using the Object::create() static method can be replaced with custom classes.

for example in the Sapphire folder,


can be replaced with a custom class.


Community Member, 712 Posts

10 January 2009 at 7:45pm

Edited: 10/01/2009 7:45pm

I don't have a solution for the applying the custom class, but if you want to override the getSiteTreeFor method for the main CMS editor then this might work:

1. Create a new CustomCMSMain class that extends CMSMain with your new getSiteTreeFor method.

2. Edit your _config.php to direct cms requests to your new CMSMain class:

Director::addRules(100,array('admin/cms//$Action/$ID/$OtherID' => 'CustomCMSMain'));

(I think priorities go from high to low... so this should override the '50' in /cms/_config.php)

3. It might cause a double-up in the menu, so you might have to add this to the _config.php file too:


Let me know if this works :)