问题描述
在Moodle课程中,我需要在不同时间一张一张地显示多张图片。为此,我一次使用了一个HTML块,且每次仅带有一张图片(在我的第一次尝试中,我使用了一个随机词汇表输入块,结果证明这是一个不足的解决方案)。 HTML块方法有点麻烦,因为每当我要显示其他图片时,我都必须手动更新HTML块。
我希望HTML块中的图片每天或每周自动更改。可以做到吗?如果是这样,有人可以请我走上正确的路吗?
解决方法
我认为这个问题的关键是您可以将javascript添加到html块中。这就是为什么这些功能都带有XSS警告标记的原因。这是我的方法:
- 在您的Moodle课程中添加HTML块
- 按照每周显示的顺序添加所需的所有图片。
- 根据您使用的编辑器(很可能是atto)找到“ html”按钮,然后编辑原始文本(帮助:MoodleDocs)并单击它。
- 现在,您可以看到先前添加的图片的
<img>
标签。添加以下javascript每周轮流浏览这些图片:
<script>
// Get the week number.
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(),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>
这种方法的缺点:
- 图片仍被加载。一些学生可能会发现这一点。因此,不要在下周放任何图片。
- 有些学生有时会根据本地计算机的时区而获得不同的图片。
这种方法的优点:
- 您可以轻松编辑图片和顺序
- 您不需要安装任何插件,因为
block_html
附带了moodle
在Moodle 3.9.x上测试
如果可用的周数超过了可用的图片,则这些图片将从头开始。