如何编写Moodle插件实现不同站点间课程分类的导入导出
完全可以通过编写自定义Moodle插件实现课程分类及子分类的跨站点自动化迁移,具体实现方案如下:
插件核心实现逻辑
源站导出模块
- 调用Moodle核心内置API
core_course_get_categories递归拉取全量分类数据,包含分类名称、描述、父分类ID、排序权重、可见性、ID编号、自定义字段等所有元属性 - 梳理分类层级关系,将完整分类树导出为结构化JSON格式,保留原始父子关联标记
- 支持按分类层级、分类可见性等条件筛选导出范围
目标站导入模块
- 读取源站导出的JSON数据,按照「根分类→一级子分类→二级子分类……」的顺序遍历写入,避免父分类未创建导致的关联错误
- 导入过程中自动建立源站分类ID与目标站新生成分类ID的映射表,保证子分类的父级关联关系还原正确
- 调用Moodle核心API
core_course_create_categories执行写入操作,1:1还原分类的可见性、排序规则、自定义字段等配置
可选优化功能
- 新增重复分类校验逻辑:导入前自动检测目标站同层级下是否存在同名分类,支持跳过、覆盖、重命名三种处理策略
- 新增迁移进度展示、迁移结果日志导出功能,方便快速定位异常分类
- 可扩展对接Moodle课程备份/恢复API,实现「分类+分类下课程」的全量自动迁移
注意事项
迁移操作前务必对两个站点执行全量数据备份,避免导入操作误修改现有正式数据
两个站点的Moodle大版本建议保持一致,避免核心API参数差异导致的导入失败
内容的提问来源于stack exchange,提问作者Codeparl
相关产品推荐
相关产品推荐

