在Moodle课程格式插件中注入CSS

时间:2019-05-21 09:37:15

标签: css moodle

我正在为Moodle写一个所谓的“格式插件”。该插件的输出需要使用存储在该插件一部分的文件styles.css中的CSS来作为样式。不幸的是,由于严格的缓存,更改未在屏幕上更新。通过启用“主题设计模式”(“站点管理员”>“外观”>“主题设置”),可以避免这种情况,但是Moodle的运行速度将变得异常缓慢-使用它的速度会大大降低。

其他插件类型(例如“活动插件”)允许自定义,例如 $PAGE->requires->css( '/path/to/my/custom.css');之后是用于写入HTML标头echo $OUTPUT->header();的命令。但是,这不适用于格式插件。 Moodle抱怨错误:“打印后不能要求CSS文件。”

在运行时使用AMD / Javascript调用加载CSS无效:

    var link;
    for(var i=0; i< css.length;i++){
      link = document.createElement("link");
      link.rel = "stylesheet";
      link.type = "text/css";
      link.href = css[i];
      document.getElementsByTagName("head")[0].appendChild(link);
    }

现在,我正在寻找一种使用PHP将<link href="/path/to/my/custom.css">注入HTML的替代方法。

1 个答案:

答案 0 :(得分:0)

使用Cannot insert row, some of the primary key values are missing. Got (8, 197, ), expecting (target_id, section_id, target_type)粘贴,无需启用设计模式,但是每当需要重建从Moodle项目的根目录运行的css / theme高速缓存时:

styles.css

清除Moodle缓存后,Moodle将重建并服务于更新的CSS(只有第一个请求会很慢),但是请不要忘记您可能还需要清除浏览器缓存。

概述:更新CSS,清除Moodle缓存,浏览器“硬”刷新。