0

使用 Moodle 3.1 并且对 Moodle 开发相当陌生,我想知道如何在课程中的每个活动/资源内添加自定义按钮或链接,这与课程视图页面上的标记完成复选​​框的工作相同,但来自个人活动(或资源)页面。

当然,希望以理想的模块化 Moodle 方式执行此操作,以便即使在升级后,功能也不会消失。

是否可以进行设置或配置来实现此目的,或者我是否需要编写一个完整的插件?

如果通过插件,那么朝这个方向的任何步骤都会有所帮助。

4

2 回答 2

0

我已经在 Moodle 附近有过一段时间,我很确定这是不可能的。每个资源和活动都存储在服务器上的 /mod 目录中。其中每一个都有自己的 view.php 文件。当活动完成时,条目被写入 prefix_course_modules_completion 表

为什么不让用户自行完成。

于 2017-02-28T03:20:15.517 回答
0

使用站点管理的外观部分中的附加 HTML 框,您可以添加将操纵 DOM 的 JavaScript。

站点管理中的附加 HTML 链接

以所有活动和资源为目标,没有其他 Moodle 功能有点高要求,但我使用的方法是找到该页面唯一的 ID,并使用 JavaScript 插入您想要的按钮和功能.

例如,假设您想在新闻论坛活动上添加一个新按钮。

新闻论坛中有一个 div 类为“forumaddnew”,所以我将使用它作为插入新按钮的地方。 源代码截图

var YourCustomButton =  '<input type="button" id="mybutton" value="New Function Button" class="custom"/>';

/* make sure script only runs if div exists */
if (!document.getElementsByClassName('forumaddnew')[0]) {
   /* do nothing */
} else {
    var forum = document.getElementsByClassName('forumaddnew')[0];
    forum.insertAdjacentHTML('beforebegin', YourCustomButton);
}

/* EVENT LISTENER FOR CUSTOM BUTTON */
if (!document.getElementById('mybutton')) {
   /* do nothing */
} else {
    document.getElementById("mybutton").addEventListener('click', function () {  
        alert('custom button clicked');
        //stuff you want your custom button to do
    });
}
于 2017-03-03T10:42:06.103 回答