我有运行Moodle 2.9.3+的网站,我试图自定义一个现有插件的渲染器,所以我发现了这个:
我将以下内容添加到主题
的core_renderer.php中include_once($ CFG-> dirroot。" /course/format/topcoll/renderer.php");
但是当我试图做的时候
@FixedLengthRecord(header = FahRecordHeader.class,
footer = FahRecordFooter.class,
hasHeader = true,
hasFooter = true)
它运行,但它没有加载修改后的功能。我还需要做其他事吗?当我将代码直接更改为插件时,修改后的函数运行时没有问题,但不是这样的。我非常感谢任何可能的提示。
由于
答案 0 :(得分:3)
您需要做两件事来让主题渲染器覆盖核心渲染器:
theme_overridden_renderer_factory通过扩展实例化渲染器以查找与名称'theme_NAMEOFTHEME_NAMEOFRENDERER'匹配的类的过程来工作 - 只要该类存在,就应该使用它(否则使用原始渲染器)。
有关详细信息,请参阅https://docs.moodle.org/dev/Overriding_a_renderer。
答案 1 :(得分:1)
嗯,你确定脚本包含中没有错误吗?如果您在ini设置中关闭error_reporting
,则不会看到E_WARNING
PHP可能会提升。将此项设置为开,或使用require_once()
代替。有关差异,请参阅此SO帖子的已接受回复:Difference between require, include and require_once?