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

如何一次性隐藏单门课程中的所有主题?

批量重置课程并隐藏所有主题的命令行解决方案

单门课程:一键完成重置+隐藏所有主题

以主流LMS系统Moodle为例,你可以通过组合内置的CLI脚本,用一条复合命令完成单门课程的操作:

php admin/tool/cli/course_reset.php --courseid=你的课程ID --reset-all && php admin/tool/cli/set_section_visibility.php --courseid=你的课程ID --hidden=1
  • course_reset.php 负责重置课程,--reset-all 参数会重置课程内所有可配置的内容(包括作业、资源等)
  • set_section_visibility.php 批量设置该课程下所有主题为隐藏状态
  • && 确保前一条命令执行成功后再执行后一条,实现"单条命令"的效果

如果是Canvas系统,可通过API组合调用实现:

# 替换<你的API令牌>和<你的Canvas域名>
curl -X POST -H "Authorization: Bearer <你的API令牌>" https://<你的Canvas域名>.instructure.com/api/v1/courses/你的课程ID/reset_content && curl -X PUT -H "Authorization: Bearer <你的API令牌>" https://<你的Canvas域名>.instructure.com/api/v1/courses/你的课程ID/modules --data "module[published]=false"

批量处理所有课程

如果要一次性重置所有课程并隐藏主题,可通过循环遍历课程ID实现:

Moodle示例

for courseid in $(php admin/tool/cli/list_courses.php --ids-only); do
  php admin/tool/cli/course_reset.php --courseid=$courseid --reset-all && php admin/tool/cli/set_section_visibility.php --courseid=$courseid --hidden=1
done

Canvas示例

# 替换<你的API令牌>和<你的Canvas域名>
for courseid in $(curl -s -H "Authorization: Bearer <你的API令牌>" https://<你的Canvas域名>.instructure.com/api/v1/courses | jq -r '.[].id'); do
  curl -X POST -H "Authorization: Bearer <你的API令牌>" https://<你的Canvas域名>.instructure.com/api/v1/courses/$courseid/reset_content
  curl -X PUT -H "Authorization: Bearer <你的API令牌>" https://<你的Canvas域名>.instructure.com/api/v1/courses/$courseid/modules --data "module[published]=false"
done

注意事项

  • 执行前务必备份数据库,避免不可逆的数据丢失
  • 确保你拥有服务器命令行权限,且CLI脚本/API端点的路径、参数与你的系统版本匹配
  • 部分LMS可能需要额外配置API权限或CLI参数,建议先在测试课程上验证命令效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:20:58