You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Moodle Docker中安装自定义H5P交互式视频库?

解决Moodle H5P中安装自定义修改库的问题

一、为什么你之前的方法未生效

你尝试通过hvp_alter_scripts追加脚本的思路本身没问题,但存在几个关键错误:

  1. 代码中混入了前端/Node.js代码:console.log(process.cwd());是前端JS或Node环境的语法,在PHP文件中执行会直接报错,导致整个方法无法运行。
  2. 脚本路径使用相对路径:Moodle加载静态资源需要基于站点根目录的绝对路径,相对路径无法被正确解析。
  3. 未针对目标库做过滤:该方法会给所有H5P内容追加脚本,若你只想针对修改后的交互式视频生效,需要增加判断逻辑。

二、安装自定义H5P库的正确方案

方案1:直接替换已安装的库文件(快速测试)

  1. 找到Docker环境中H5P库的存储路径:通常在moodledata/h5p/libraries目录下,找到对应交互式视频的文件夹(命名格式为H5P.InteractiveVideo-x.x.x)。
  2. 将你fork修改后的所有代码文件,覆盖到该文件夹中(注意保留原有的library.json,若修改了库配置需同步更新该文件)。
  3. 清除Moodle缓存:
    • 后台操作:进入站点管理 → 开发 → 清除缓存
    • 命令行操作:进入Docker容器,执行php admin/cli/purge_caches.php

方案2:本地包上传安装(规范长期使用)

  1. 将修改后的交互式视频库打包为H5P格式:确保打包的压缩包根目录包含library.json文件(可直接在fork仓库中压缩所有文件为zip)。
  2. 在Moodle中安装自定义库:
    • 全局安装:进入站点管理 → 插件 → 活动模块 → H5P交互式内容 → 库,点击"上传库",选择你的自定义压缩包,替换原有官方库。
    • 单内容使用:创建H5P交互式内容时,选择"上传"而非"获取",直接上传自定义压缩包生成内容。

三、修复追加自定义脚本的方法(若仍需使用)

修正renderer.php中的代码,确保语法正确、路径有效:

/**
 * Add scripts when an H5P is displayed.
 *
 * @param object $scripts Scripts that will be applied.
 * @param array $libraries Libraries that will be displayed.
 * @param string $embedType How the H5P is displayed.
 */
public function hvp_alter_scripts(&$scripts, $libraries, $embedType) {
    global $CFG;
    // 仅针对交互式视频库追加自定义脚本
    foreach ($libraries as $library) {
        if ($library->machineName === 'H5P.InteractiveVideo') {
            $scripts[] = (object) array(
                'path'    => $CFG->wwwroot . '/mod/hvp/x.js',
                'version' => '?ver=0.0.1',
            );
            break;
        }
    }
}

修改后需执行以下步骤:

  1. 清除Moodle缓存(同上)。
  2. 在x.js中添加测试代码(如console.log('Custom script loaded')),打开浏览器开发者工具查看是否加载成功。

注意事项

  • Docker环境中,若使用了卷挂载,本地修改文件会同步到容器;若文件在镜像内部,需进入容器修改或重新构建镜像。
  • 修改H5P库时,需保持library.json中的machineName、majorVersion、minorVersion与原库一致,避免Moodle识别为新库导致兼容性问题。
  • 定期备份自定义库文件,防止Moodle升级或库更新时被覆盖。

内容的提问来源于stack exchange,提问作者Khabbab Zakaria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:40:44