3376 Posts in 1000 Topics by 713 members
|Go to End|
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
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.
9 January 2009 at 10:50am
Never tried that before, but see if this works:
Object::useCustomClass('LeftAndMain', 'CustomLeftAndMain', true);
10 January 2009 at 7:52am
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.
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.
10 January 2009 at 7:45pm Last edited: 10 January 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
|Go to Top|