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

Javascript 如何在Moodle课程中定期更改HTML块的内容?,javascript,html,automation,moodle,Javascript,Html,Automation,Moodle,我需要在Moodle课程的不同时间段逐个显示多张图片。为此,我一次使用一个带有一张图片的HTML块(在我的第一次尝试中,我使用了一个随机词汇表条目块,结果证明这是一个不合适的解决方案)。HTML块方法有点麻烦,因为每当我想显示不同的图片时,我必须手动更新HTML块。 我希望每天或每周自动更改HTML块中的图片。这能做到吗?如果是这样的话,有人能帮我找到正确的方向吗?我认为这个问题的关键是可以将javascript添加到html块中。这也是为什么这些功能被标记为XSS警告的原因。这是我的方法: 在

我需要在Moodle课程的不同时间段逐个显示多张图片。为此,我一次使用一个带有一张图片的HTML块(在我的第一次尝试中,我使用了一个随机词汇表条目块,结果证明这是一个不合适的解决方案)。HTML块方法有点麻烦,因为每当我想显示不同的图片时,我必须手动更新HTML块。

我希望每天或每周自动更改HTML块中的图片。这能做到吗?如果是这样的话,有人能帮我找到正确的方向吗?

我认为这个问题的关键是可以将javascript添加到html块中。这也是为什么这些功能被标记为XSS警告的原因。这是我的方法:

  • 在Moodle课程中添加HTML块
  • 按每周显示的顺序添加所需的所有图片
  • 根据您使用的编辑器(很可能是atto),找到“html”按钮,编辑原始文本(帮助:)并单击它
  • 现在,您可以看到先前添加的图片的
    标记。添加以下javascript以每周在这些图片中旋转:
  • 
    //获取周数。
    Date.prototype.getWeek=函数(){
    var onejan=新日期(this.getFullYear(),0,1);
    返回Math.ceil(((this-onejan)/86400000)+onejan.getDay()+1)/7);
    }
    var numberofweek=(新日期()).getWeek();
    var parent=document.currentScript.parentNode;
    var pictures=parent.querySelectorAll('img');
    对于(var picturenumber=0;picturenumber
    这种方法的缺点:

  • 这些图片仍然被加载。一些学生可能会发现这一点。所以,不要把任何图片放在那里,这些图片应该在下周可以看到
  • 有些学生有时可能会根据本地机器的时区获得不同的图片
  • 这种方法的优点:

  • 你可以很容易地编辑图片和顺序
  • 您不必安装任何插件,因为moodle附带了
    block\uHTML
  • 在Moodle 3.9.x上测试

    如果比可用图片多周,图片将从头开始。

    您所说的“按显示顺序添加所有所需图片”是什么意思?我是否必须复制/粘贴HTML块“内容”框中的所有图像?这会有点麻烦,因为我有很多图片。我在moodle开发者的电报聊天中问他们,有没有可能将图像存储在“私人文件”中并从那里读取它们。我担心我们需要pluginfile URL来实现这一点,这将涉及PHP代码。在这里,只使用JS的实现是不可能的。因此,要从您的个人文件中读取图片,您需要实现一个单独的块。或者在moodle plugin目录中找到一个块,该块正好可以执行此操作。但我认为这不太可能。如果你的计算机上有所有的图片,你可以一次将它们全部拖到html块中。如果不是这样的话,最简单的方法可能是事先下载所有图片。