I have site running Moodle 2.9.3+ and i was trying to customize the renderer of one existing plugin, so i found this:
I added the following into the core_renderer.php of my theme
include_once($CFG->dirroot . "/course/format/topcoll/renderer.php");
but when i tried to do
class topcoll_local_renderer extends format_topcoll_renderer {
protected function section_header($section, $course, $onsectionpage, $sectionreturn = null) {
...
}
}
it runs, but it's not loading the modified function. Do I need to do anything else? the modified function is running with no issues when I alter the code directly into the plugin, but not like this. I would greatly appreciate any possible hint.
Thanks
You need to do two things to get a theme renderer to override a core renderer:
The theme_overridden_renderer_factory works by extending the process of instantiating a renderer to look for a class that matches the name 'theme_NAMEOFTHEME_NAMEOFRENDERER' - as long as that class exists, then it should be used (otherwise the original renderer is used).
See https://docs.moodle.org/dev/Overriding_a_renderer for more details.
Hmmm are you sure there isn't an error in the script inclusion? If you have error_reporting
off in your ini settings you won't see the E_WARNING
PHP might be raising. Set this to on, or use require_once()
instead. See the accepted response to this SO post for the differences: Difference between require, include and require_once?