如何定期更改 Moodle 课程中 HTML 块的内容?

How to periodically change the content of an HTML block in a Moodle course?

我需要在Moodle课程的不同时间段一张一张地显示多张图片。为此,我使用了一个 HTML 块,一次包含一张图片(在我的第一次尝试中,我使用了一个随机词汇表条目块,结果证明这是一个不合适的解决方案)。 HTML 块方法有点麻烦,因为每当我想显示不同的图片时,我必须手动更新 HTML 块。
我想让 HTML 块中的图片每天或每周自动更改。这甚至可以做到吗?如果是这样,有人可以让我走上正轨吗?

我觉得这道题的关键在于可以在html块中加上javascript。这也是为什么这些功能标有 XSS 警告的原因。这是我的方法:

  1. 在您的 Moodle 课程中添加 HTML 版块
  2. 按每周应出现的顺序添加您想要的所有图片。
  3. 根据您使用的编辑器(最有可能是 atto)找到“html”按钮编辑原始文本(帮助:MoodleDocs)并单击它。
  4. 现在您可以看到您之前添加的图片的 <img> 标签。添加以下 javascript 以每周轮换这些图片:
<script>
    // Get the week number.
    Date.prototype.getWeek = function() {
        var onejan = new Date(this.getFullYear(), 0, 1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
    }
    var numberofweek = (new Date()).getWeek();

    var parent = document.currentScript.parentNode;
    var pictures = parent.querySelectorAll('img');
    for (var picturenumber = 0; picturenumber < pictures.length; picturenumber++) {
        if (!(numberofweek % pictures.length == picturenumber)) {
            // Hide all pictures that are not mapped to this week.
            pictures[picturenumber].style.display = 'none';
        }
    }
</script>

这种方法的缺点:

  1. 图片仍然加载。有的同学可能会了解到这一点。所以不要放任何下周应该可以访问的图片。
  2. 有些同学有时可能会得到不同的图片,这取决于他们本地机器的时区。

这种方法的优点:

  1. 您可以轻松编辑图片和顺序
  2. 您不必安装任何插件,因为 block_html 自带 moodle

在 Moodle 3 上测试。9.x
如果周数多于可用图片,图片将从头开始。