У меня есть сайт, на котором работает Moodle 2.9.3+, и я пытался настроить рендеринг одного существующего плагина, поэтому я нашел это:
Как переопределить средство визуализации так, чтобы функциональность переопределенного рендеринга также оставалась доступной?
Я добавил следующее в core_renderer.php моей темы
include_once ($ CFG-> dirroot. "/course/format/topcoll/renderer.php");
но когда я попытался сделать
class topcoll_local_renderer extends format_topcoll_renderer { protected function section_header($section, $course, $onsectionpage, $sectionreturn = null) { ... } }
он работает, но не загружает измененную функцию. Нужно ли мне что-то делать? измененная функция работает без проблем, когда я изменяю код непосредственно в плагин, но не так. Я был бы очень признателен за любые возможные намеки.
благодаря
Вам нужно сделать две вещи, чтобы заставить средство визуализации темы переопределить основной рендеринг:
Функция theme_overridden_renderer_factory работает, расширяя процесс создания экземпляра рендерера для поиска класса, который соответствует имени «theme_NAMEOFTHEME_NAMEOFRENDERER» – пока этот класс существует, тогда он должен использоваться (в противном случае используется оригинальный рендерер).
Дополнительную информацию см. В https://docs.moodle.org/dev/Overriding_a_renderer .
Хм, вы уверены, что в включении скрипта нет ошибки? Если у вас error_reporting
в ваших ini-настройках, вы не увидите, что E_WARNING
PHP может быть E_WARNING
. Установите это для включения или используйте require_once()
. См. Принятый ответ на этот пост SO для различий: разница между require, include и require_once?