Moodle4-管理指南-全-
Moodle4 管理指南(全)
原文:
zh.annas-archive.org/md5/b34032a9827433dbb97bfc87bb9f6a84译者:飞龙
前言
自 2002 年推出以来,Moodle 已成为衡量每个学习管理系统基准的标杆。它赢得了广泛的国际赞誉,并确立了自己作为教育工具和服务的生态系统的地位。
Moodle 有两种版本:Moodle LMS和Moodle Workplace。
Moodle LMS 是 Moodle 的原始版本,针对教育机构,如学校、学院、大学和培训机构。Moodle Workplace 是为企业和组织培训设计的,从而成为一个强大且灵活的工作场所学习平台。
虽然这本书涵盖了 Moodle LMS 的管理,但它也可以与 Moodle Workplace 一起使用,因为后者是前者的扩展。本书将提供有关 Moodle Workplace 的参考和示例。
以地铁/地下/地铁地图的形式展示各种 Moodle 主题是一种有趣的方式,其中任何图标式站点都代表仅适用于 Moodle Workplace 的功能(您可以从www.openumlaut.com下载多种语言的高质量版本和最新功能):

图 P.1 – Moodle 和 Moodle Workplace 地图
《Moodle 4 管理指南》是一本全面、实用的 Moodle 站点管理指南。它涵盖了设置 Moodle、配置、日常管理任务以及高级选项以自定义和扩展 Moodle。
作者自 Moodle 问世以来一直处于前沿,他采用了问题解决的方法,使内容与你的日常操作保持一致。实际例子将帮助你为大型组织和小型实体 alike 设置 Moodle。
这是一个一站式参考,涵盖了你在管理任何形状和大小的 Moodle 站点时可能遇到的任务。它不仅涵盖了 Moodle 的核心功能,还包括一些第三方工具和插件,这些工具和插件将进一步增加你在处理管理任务时的灵活性和效率。
本书的第四版是从头开始编写的,以与 Moodle 的最新版本保持一致。它还增加了超过 120 个图表、清单和工作流程。希望你在管理你的 Moodle 系统时,会发现其内容有用。祝您 Moodling 愉快!
这本书是为谁而写的
这本书是为技术人员、系统管理员以及学术人员所写 – 也就是说,基本上是任何需要管理 Moodle 系统的人。无论你是在处理小规模的本地 Moodle 系统还是大规模的多站点学习管理系统(LMS),这本书都将帮助你完成任何管理任务。
一些基本的 Moodle 知识会有所帮助,但不是必需的。
LMS 工作职能
Moodle 管理员是管理 Moodle 系统的 LMS 管理员。通过专门从事教育行业的招聘机构进行快速搜索,可以发现与 LMS 管理密切相关且数量不断增长的专用职位。以下是一些例子:
-
LMS 管理员(或 VLE 管理员或 MLE 管理员)
-
LMS 支持官员
-
LMS 架构师
-
LMS 工程师
-
LMS 协调员
此列表不包括在行政职能中定期执行的功能,例如 IT 支持。它也不包括在教育学领域经常承担 LMS 管理员工作的角色,例如学习技术专家或电子学习协调员。
LMS 管理员通常与负责 IT 系统、数据库和网络的工作人员紧密合作。在这些领域具备一些基本技能已被证明是有益的。此外,在拥有内容管理系统、学生信息管理系统和其他相关基础设施的较大组织中,与其他部门的联系更有可能。
鉴于与 LMS 管理相关的角色数量不断增加,让我们来看看一些关键的工作职能义务以及哪些技能是基本和可取的。
LMS 管理员的义务和技能集
LMS 管理员的职责因组织而异。然而,一些义务在安装和设置中是共同的:
-
用户管理(学习者、教师和其他人员)
-
课程管理(课程规划)
-
模块管理(提供给用户的功能)
-
LMS 的外观和感觉(通常由网页设计师执行)
-
年末维护(如适用)
-
年初设置(如适用)
-
支持教学人员和学习者
除了这些通用的 LMS 特定功能外,您必须确保您的系统安全、稳定且性能良好。必须实施备份,必须设置监控,必须生成使用报告,并且必须定期进行系统维护。
如果您托管自己的系统,您将负责所有列出的任务以及更多。如果您的 LMS 托管在托管环境中,托管提供商将执行一些更接近系统级别的任务,因此他们必须对 Moodle 有很好的理解。无论如何,如果出现任何问题,如果他们需要新的功能,或者需要进行某些行政任务,您将是首先被员工和学习者联系的人。
权力越大,责任越大!
本书涵盖的内容
本书分为五部分,如下图所示:

图 P.2 – 书籍结构
第一部分:入门
这两个初始章节将帮助您入门。您将学习如何安装 Moodle 以及如何保持其更新。您将进一步熟悉 Moodle 系统和其用户界面。本部分包括以下章节。
第一章,安装 Moodle,介绍了最适合您组织的 Moodle 设置,包括软件和硬件要求。您将学习如何在 Moodle 更新选项详细说明之前,在 LAMP 环境中安装 Moodle。在整个章节中,您将学习如何使用 Moodle 的命令行界面(CLI)、Git 和第三方 Moodle Shell(Moosh)执行所描述的操作。
第二章,探索 Moodle 系统,涵盖了学习平台的基本构建块。首先,我们介绍了 Moodle 架构——即主要 Moodle 组件——以及其数据和代码的存储位置。然后,您将获得通过其直观的用户和管理界面在 Moodle 中找到路径的技能,以及如果需要在哪里寻求帮助。最后,您将学习 Moodle 的文件管理是如何工作的以及如何配置回收站。
第二部分:课程、用户和角色
课程、用户和角色是 Moodle 的骨架。您将学习如何管理课程和类别,以及将用户注册到课程的不同选项。然后,我们将处理用户和群体的管理以及如何设置不同的身份验证方法。最后,您将学习如何通过在不同环境中应用角色和能力来管理权限。本部分包括以下章节。
第三章,探索课程、用户和角色,为您提供了对 Moodle 课程、用户和角色的概述。它涵盖了关键概念的基础知识,并展示了三个核心元素是如何内在交织在一起的。
第四章,管理课程和注册,展示了如何设置新的课程(手动和批量)并将它们组织到类别中。您将学习如何添加自定义课程字段和处理课程请求。本章的其余部分涉及一系列注册选项,包括 Moodle 的内部注册(手动、自助和访客)、群体注册和同步,以及数据库驱动的注册——例如,通过 LDAP、元课程和支付驱动的注册。
第五章,管理用户、群体和身份验证,解释了如何在您的系统中管理用户。我们首先介绍用户资料的样子以及它们可以如何扩展,然后介绍(手动和批量)标准用户操作。然后,我们解释如何手动添加用户到 Moodle——即一个接一个地以及通过批量上传——然后处理群体。然后,我们将了解 Moodle 为我们配备的众多身份验证机制。最后,我们将讨论用户命名方案的最佳实践。
第六章,管理权限、角色和能力,指导您进行权限管理。这涉及将角色和能力应用于不同环境中的用户。在处理任何与行政角色和上下文相关的设置(包括上下文冻结)之前,我们将介绍角色的分配、现有角色的修改和新角色的创建。
第三部分:启用学习和教学
本部分是关于您作为管理员如何确保为您的学习者教师提供最佳的学习环境。您将了解 Moodle 外观和感觉的不同增强选项以及如何管理 Moodle 插件,涵盖教育和技术功能。本部分包括以下章节。
第七章,增强 Moodle 的外观和感觉,告诉您如何调整您的 Moodle 系统以符合您组织的公司品牌。我们将介绍系统外观的定制,您将学习如何在处理不同的登录流程和调整页眉之前如何更改关键页面的布局。我们还将进一步处理一些影响整个网站外观和感觉的工具:块抽屉、Atto HTML 编辑器、视频和音频,最后是用户导览。在您学习如何支持有辅助需求的用户之前,我们将简要介绍主题定制。
第八章,理解 Moodle 插件,详细解释了插件是什么以及如何通过第三方插件扩展您的 Moodle 系统。我们将介绍如何管理 Moodle 插件,包括它们的安装、配置和删除。最后,在介绍一些流行的扩展之前,您将能够区分好的插件和不太好的插件。
第九章,配置教育功能,处理您的 Moodle 系统的教育配置。涵盖的教学主题包括协作工具(博客、评论和标签)、内容创建功能(内容库和 H5P、LTI 平台和工具、过滤器、抄袭预防措施和许可证)、成绩和评估以及技能和激励措施的管理(能力、学习计划、徽章和证书)。
第十章,配置技术功能,处理您的 Moodle 系统的技术配置。涉及的技术主题包括同步和异步通信(聊天和 BigBlueButton、消息、通知和 RSS 订阅)、本地化(语言、日历和时间区)、存储库和作品集。
第十一章,启用移动学习,教您如何准备、配置和定制 Moodle 应用程序。在处理您的学习者可以使用应用程序之前必须采取的预备步骤之前,我们将涵盖 Moodle 提供的不同订阅,包括品牌移动应用程序。应用程序配置包括移动功能、通知、应用程序政策以及应用程序的外观和感觉。
第十二章,通过报告和分析获得洞察力,为您提供所需的工具来解释和分析 Moodle 收集的大量使用数据。我们将首先关注 Moodle 的自定义报告生成器,涵盖数据源、报告构建、报告受众和计划。在详细概述了底层的 Moodle 日志框架及其组件、事件和日志存储之后,您将学习如何与 Moodle 日志交互。最后,我们将处理两种使用日志作为其基础的报告技术:Moodle 统计和 Moodle 分析。
第四部分:内部结构
本部分涵盖了学习者和技术人员通常看不到但确保 Moodle 系统平稳运行至关重要的所有主题。您将学习如何确保安全性、遵守数据保护法规、优化 Moodle 性能、实施坚实的备份和恢复策略,以及使用有用的管理工具。本部分包括以下章节。
第十三章,确保 Moodle 安全性,专注于确保您的 Moodle 系统中的数据免受任何滥用。您将了解安全通知、用户安全、内容安全和系统安全。
第十四章,遵守数据保护法规,涉及数据隐私和个人数据的保护。您将了解 Moodle 对通用数据保护条例的实施,包括指定隐私官、管理政策、配置数据登记和应对主题访问请求。
第十五章,优化 Moodle 性能,确保您的 Moodle 系统发挥其全部潜力。我们将涵盖配置、监控和微调您的学习管理系统以实现最大速度。您将了解如何优化 Moodle 功能性能,并讨论提高速度与可能降低功能之间的权衡。然后,我们将介绍强大的Moodle 通用缓存(MUC),包括缓存类型、存储和定义。最后,您将学习如何配置各种系统相关性能设置,即会话处理、cron 管理、计划任务、全局搜索和系统路径。
第十六章,避免失眠之夜 – Moodle 备份与恢复,专注于确保在灾难发生时您的数据不会丢失。我们将涵盖课程备份、站点备份、系统备份以及从已备份的数据存档中恢复数据。您将了解两种使用备份和恢复功能的过程:规划年终流程和实施课程模板。
第十七章,使用 Moodle 管理工具,涵盖了帮助您完成特定管理任务的 Moodle 工具。这些包括站点管理员预设、数据库工具以及 CLI 脚本。我们还将探讨一些插件,特别是强大的 Moodle Shell,Moosh。
第五部分 – Moodle 之外
没有 Moodle 是孤岛。虽然许多 Moodle 系统是独立运行的,但在某些情况下,您的 LMS 必须与外部实体合作,无论是通过 Web 服务与其他系统交换数据,连接不同的 Moodle 实例,还是支持多个租户。本部分处理设置此类拓扑,并包括以下章节。
第十八章,使用 Web 服务集成外部系统,探讨了通过 Web 服务将 Moodle 与其他系统集成的途径。在学习如何设置外部系统和控制 Moodle 的用户之前,我们将提供有关 Moodle Web 服务基本概念的信息。
第十九章,设置 Moodle 网络,告诉您如何通过对等设置或通过 Moodle 中心连接不同的 Moodle 系统。您还将进一步了解如何启用 MoodleNet,这是一个用于查找、分享和整理开放教育资源的平台。
第二十章,支持多租户,讨论了在 Moodle 中设计和实现多租户的不同方法和模型。我们区分了不同的多租户设置:按类别多租户、按隔离系统多租户和 Moodle Workplace 中的多租户。
附录,配置设置,为您提供可以修改 Moodle 配置文件中的参数列表以及每个值的影响。涵盖的领域包括管理设置和系统设置。
为了充分利用这本书
对于 Moodle,您必须在您的服务器上运行以下组件(截至撰写时为 4.0 版本):
-
数据库:MySQL(版本 5.7 或更高版本,使用符合 ACID 的 InnoDB 存储引擎)、PostgreSQL 10+、MariaDB 10.2.29+、Aurora MySQL(在 Amazon Web Services 上)、Microsoft SQL Server 2017+和 Oracle 11.2+。
-
Web 服务器:Apache 是首选的 Web 服务器选项,但 Moodle 与支持 PHP 的任何其他 Web 服务器都兼容,例如 Microsoft IIS。
-
PHP 7.3.0 是运行 Moodle 4 的最低 PHP 版本;从 Moodle 4.1 开始,最低版本为 PHP 7.4.0。PHP 8 也得到支持。
-
curl、ctype、dom、fileinfo、gd、hash、iconv、intl、json、mbstring、openssl、pcre、simplexml、spl、xml、xmlreader、zip和zlib。
根据您的具体设置,可能需要额外的软件。
如果您无法访问前面的组件,请确保您对 Moodle 系统有完整的管理员访问权限。您将无法执行任何系统级操作,但可以通过其 Web 界面完全管理 Moodle。
下载彩色图像
我们还提供了一份包含本书中使用的截图和图表的彩色图像的 PDF 文件。您可以从这里下载:packt.link/PnRUP
使用的约定
本书使用了多种文本约定。
文本中的代码:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 昵称。以下是一个示例:“为了防止dataroot可访问,将目录移出 Web 目录,并相应地修改config.php,通过更改$CFG->dataroot条目。”
代码块设置如下:
/* Change toolbar background color to orange */
.toolbar-background
{
background: orange;
}
粗体:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词在文本中显示如下。例如,“转到常规 | 高级功能并勾选启用移动设备 Web 服务选项。”
小贴士或重要注意事项
看起来是这样的。
联系我们
我们始终欢迎读者的反馈。
一般反馈:如果您对本书的任何方面有疑问,请通过 customercare@packtpub.com 给我们发邮件,并在邮件主题中提及书名。
勘误表:尽管我们已经尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,我们将不胜感激,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/support/errata并填写表格。
盗版:如果您在互联网上以任何形式发现我们作品的非法副本,我们将不胜感激,如果您能提供位置地址或网站名称,我们将不胜感激。请通过 copyright@packt.com 与我们联系,并提供材料的链接。
如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问authors.packtpub.com.
分享您的想法
一旦您阅读了《Moodle 4 管理指南》,我们很乐意听听您的想法!请点击此处直接访问此书的亚马逊评论页面并分享您的反馈。
您的评论对我们和科技社区非常重要,并将帮助我们确保我们提供高质量的内容。
下载这本书的免费 PDF 副本
感谢您购买这本书!
您喜欢在旅途中阅读,但无法携带您的印刷书籍到处走?您的电子书购买是否与您选择的设备不兼容?
别担心,现在,每购买一本 Packt 书籍,您都可以免费获得该书的 DRM 免费 PDF 版本。
在任何地方、任何时间、任何设备上阅读。直接从您最喜欢的技术书籍中搜索、复制和粘贴代码到您的应用程序中。
优惠不会就此停止,您还可以获得独家折扣、时事通讯和每日免费内容的每日访问权限
按照以下简单步骤获取福利:
- 扫描下面的二维码或访问以下链接

https://packt.link/free-ebook/9781801816724
-
提交您的购买证明
-
就这样!我们将直接将您的免费 PDF 和其他福利发送到您的邮箱
第一章:安装 Moodle
在本章的第一部分,我们将开始安装 Moodle。
在提供概述描述最合适的设置之后,我们将概述必要的软件和硬件要求,然后再介绍以下安装:
-
在 LAMP 环境中安装 Moodle
-
通过命令行****界面(CLI)安装 Moodle
-
手动和通过 CLI 以及 Git 升级 Moodle
我们不会涵盖除 Linux 以外的操作系统的安装,但我们将提供一些针对 Windows 和 macOS 的资源指南。
Moodle 可以从单个讲师扩展到整个机构。我们只会涵盖基本安装,并介绍一些常见问题的解决方案。我们还将假设您熟悉基本的 Linux 系统管理。
在本章中,我们将涵盖以下主题:
-
准备您的 Moodle 安装
-
在 LAMP 环境中安装
-
通过命令行界面安装
-
更新 Moodle
准备您的 Moodle 安装
在开始安装 Moodle 之前,您必须决定哪种设置最适合您的组织。一旦您做出了决定,在您开始之前,您必须满足一些硬件和软件先决条件。
选择您的最佳设置
您可以在许多不同的环境中设置 Moodle。以下三个主要标准将帮助您确定正确的设置:
-
灵活性:如果您希望完全控制自己的系统,安装插件,能够调整系统设置,并频繁更改设置,您应该托管自己的服务器。然而,如果您更愿意只管理 Moodle,而其他人则负责操作系统、Web 服务器和备份,那么选择专业托管设置会更好,尤其是由授权 Moodle 合作伙伴提供的方案。
-
可扩展性:这完全取决于同时登录到 Moodle 的活跃学习者和教育者的数量。小型服务器上的 Moodle 将无法应对数百个同时登录的用户。另一方面,对于只有几十个学习者的小型机构来说,负载均衡集群将是过度配置。以下表格提供了一些针对不同类型教育组织的指示性设置:

图 1.1 – 根据用户数量确定的 Moodle 设置
请记住,这些只是指示性数字,并非一成不变,还取决于这里提到的其他因素。
每个 Moodle 实例都必须安装在专用或共享服务器上,无论是内部托管还是外部托管。如果您决定走托管路线,强烈建议避免选择便宜的托管套餐,因为这些系统没有针对 Moodle 使用进行优化;它们的“一刀切”方法将显著影响系统的性能,尤其是在并发用户数量增加的情况下。
Moodle HQ 提供在 moodlecloud.com 上的托管服务;然而,这些套餐有一些限制(具体数字取决于选择的计划):用户限制、存储限制、无法安装插件或自定义主题,以及无法修改一些硬编码的管理设置。如果这些限制可以接受,那么在 moodlecloud.com 上托管可能适合您的组织。
- 成本:预算限制无疑将发挥重要作用。除非您已经建立了适当的基础设施,否则将您的 Moodle 系统外部托管可能更经济有效,因为它可以节省您购买服务器和租赁 24/7 满足用户需求的数据连接的费用。如果您使用的是商业操作系统、Web 服务器和数据库系统而不是开源解决方案,许可费用将显著更高。无论如何,Moodle 都旨在支持适合您组织 IT 政策的广泛可能的底层基础设施。
除了这些三个影响底层基础设施决策的标准之外,其他因素,如内部专业知识、与其他系统的兼容性、IT 政策、个人偏好和现有资源,也会影响您的决策。
我们将介绍托管 Moodle 最受欢迎的操作系统——Linux。对于其他操作系统或配置,例如在虚拟化环境中或在多服务器集群上,请咨询您当地的 Moodle 合作伙伴(moodle.com/solutions/certified-service-providers)。一些托管公司提供一键快速安装;虽然由此产生的 Moodle 系统足以用于实验性站点,但它绝对不适合生产环境。
满足 Moodle 预先条件
在我们开始安装 Moodle 之前,必须满足一些硬件和软件要求。
硬件要求
这些要求适用于您自己托管 Moodle 或在外部服务器(共享、虚拟、专用或集群)上托管的情况。在更便宜的托管套餐中,硬件配置通常不足以高效运行 Moodle:

图 1.2 – Moodle 硬件
让我们更详细地看看这些要求:
-
磁盘空间:Moodle 本身大约占用 1 GB 的磁盘空间。然而,这仅为您提供一个裸系统,并不考虑您所需的任何学习资源空间。磁盘越快越好。RAID 磁盘推荐,但在较小安装中不是必需的。
-
内存:一个很好的经验法则是为每 5 到 10 个并发用户配备 1 GB 的 RAM。在基于 Windows 的系统上,由于操作系统的高开销,您必须将此计算加倍。在所有硬件组件中,RAM 对 Moodle 的性能影响最大。
重要提示
内存越多越好;内存越快越好。
-
CPU:处理器类型和速度也很重要,但不如内存重要。一如既往,CPU 越快越好,CPU 的核心越多,性能越强大。
-
网络:虽然 Moodle 可以在独立机器上运行,但其全部潜力在于网络环境中。快速的网络卡是必不可少的,如果 LMS 通过互联网访问,则良好的上传和下载速度也是必要的。
现在,让我们看看软件要求。
软件要求
虽然建议安装最新版本,但对于 Moodle 4,您必须在您的服务器上运行以下组件(有关特定版本的说明,请参阅 moodledev.io/general/releases):
-
数据库:Moodle 正式支持以下数据库系统:MySQL(版本 5.7 或更高版本,使用符合 ACID 的 InnoDB 存储引擎)、PostgreSQL 10+、MariaDB 10.2.29+、Aurora MySQL(在亚马逊网络服务上)、Microsoft SQL Server 2017+ 和 Oracle 11.2+。
-
Web 服务器:Apache 是首选的 Web 服务器选项,但 Moodle 与支持 PHP 的任何其他 Web 服务器都兼容,例如 Microsoft IIS。
-
php.ini或.htaccess文件(更多详情请参阅 docs.moodle.org/en/Installing_Moodle)。 -
curl,ctype,dom,fileinfo,gd,hash,iconv,intl,json,mbstring,openssl,pcre,simplexml,spl,xml,xmlreader,zip, 和zlib -
exif,soap,sodium,tokenizer, 和xmlrpc -
mysql,odbc, 和pgsql(根据数据库)以及ldap,ntlm和其他(根据所使用的身份验证机制)
根据您的具体配置,可能需要额外的软件。假设数据库、Web 服务器、PHP 和扩展已经正确安装,因为这不是 LMS 管理员的任务。一旦这样,我们就可以开始了。
重要提示
要访问 Moodle,需要一个现代的 Web 浏览器(Firefox、Google Chrome、Edge 或 Safari 的最新版本)。
在开始安装过程之前,熟悉 Moodle 的发布和版本是有益的。
理解 Moodle 版本
Moodle 版本遵循严格的日历,该日历定期在 moodledev.io/general/releases 上发布和更新。如果计划中的功能尚未准备好进行即将发布的版本,它将被移至下一个版本;也就是说,发布日期永远不会改变,但引入功能的时间可能会变化。
主要版本(4.0、4.1 等)的发布频率为每年两次(五月的第二个星期一和十一月的第二个星期一)。
Moodle 在三月的第二个星期一、五月的第二个星期一、七月的第二个星期一、九月的第二个星期一和十一月的第二个星期一发布 次要版本(4.1.1、4.1.2 等)。在严重安全问题或重大回归被修复的情况下,也适用于非计划发布。
Moodle 区分两种类型的发布:
-
标准支持版本:将修复 12 个月的错误,并提供 18 个月的安全支持
-
长期支持版本:将修复 12 个月的错误,并提供 36 个月的安全支持
简化的发布日历如下所示;更详细版本可在 moodledev.io/general/releases 找到:

图 1.3 – Moodle 发布
当 Moodle 4.0 在 2022 年 4 月发布时,版本 3.9 到 3.11 仍然受到支持。到 Moodle 4.1 发布时,只有版本 3.9 将受到支持,因为其生命周期已被延长(因此有长期支持标签),以便管理员有更多时间升级到 4 分支。
如果你希望了解未来的发布情况,请查看 Moodle 的路线图 moodledev.io/general/community/roadmap,在那里你可以找到所有 Moodle 产品和服务的未来技术发展的当前计划。
好的,版本号和发布日期就说到这里。让我们学习如何安装(最新版本的)Moodle。
在 LAMP 环境中的安装
Moodle 使用 Apache、MySQL 和 PHP(称为 LAMP 堆栈)在 Linux 上开发。如果你有选择,这是首选的环境。关于 PostgreSQL 是否是更合适的数据库选项,目前存在持续的争论,但我们将坚持使用 MySQL/MariaDB,因为这是大多数管理员熟悉的系统。此外,一些组织可能绑定在 Microsoft SQL 或 Oracle 上。如果这种情况适用,请参阅相应的安装指南,因为这超出了本书的范围。
高级安装过程在以下流程图中展示:

图 1.4 – Moodle 安装过程
我们将在接下来的子节中逐一介绍每个阶段,涵盖 Linux 环境中的每个安装步骤。对于其他操作系统,我们不会涉及;以下是一些应该能帮助你开始的提示:
-
对于用户数量较少的 Windows 服务器,基于 XAMPP 的 Moodle 发行版是合适的。XAMPP 是一个免费的 Apache 发行版,包含 MySQL 和 PHP(以及 Perl),适用于多个操作系统。Windows 的 Moodle 发行版充分利用了 XAMPP,位于 download.moodle.org/windows。该安装适用于所有最新的 Windows PC 和服务器版本。
-
对于较大的 Windows 安装,您必须手动安装 Moodle,这涉及到安装数据库服务器(MS SQL 或任何其他支持的系统)、一个网络服务器(Microsoft IIS 或 Apache)和 PHP。您可以在 docs.moodle.org/en/Windows_installation 找到有关此过程的详细信息。
-
MAMP 是一个免费的发行版,包含 Apache(以及 Nginx)、MySQL 和 PHP,适用于 macOS。与它的 Windows 版本类似,macOS 的 Moodle 发行版仅适用于本地安装,而不适用于生产环境。Moodle4Mac 通过 MAMP 提供通用二进制文件,位于 download.moodle.org/macosx。
现在,让我们通过下载 Moodle 开始安装过程。
下载 Moodle
访问 download.moodle.org 并选择最新版本:

图 1.5 – Moodle 下载
新版本可能在您阅读此内容时已经可用。如果您想使用本书所写的 4.0.x 版本,请选择 其他支持的版本;否则,您可以自由选择最新的稳定构建;本书中的大多数内容仍然适用。
Moodle 的下载站点上有五种类型的构建版本可供选择:
-
最新版本:当前 Moodle 版本有两个版本:最新的稳定构建和最新的官方版本。最新的稳定版本每周(每周三)创建一次,是新建服务器的最佳选择。最新的官方版本包含稳定构建和新修复,但该版本尚未经过每周代码审查,可能包含未解决的问题。
-
其他支持的版本:Moodle 开发团队维护比当前版本更早的版本,如前面的发布计划中所述。
-
仅支持安全的版本:影响安全或数据丢失的关键修复将提供给下一个版本,但不会回滚其他错误修复。请参阅之前提供的 Moodle 版本信息。
-
旧版本:对于旧版本,将提供最后一个构建。然而,这些版本不再维护。
-
开发版本:Moodle 还提供了下载软件的测试版(如果可用)和最新开发版本的选项。这些版本仅应下载用于测试或开发目的,绝不应在生产环境中使用!
每个版本都提供两种压缩格式:TGZ(使用tar命令解压)和 ZIP(使用unzip命令提取)。您可以通过点击相应的链接下载它们,或者如果您有(安全的)shell 访问权限,可以使用wget命令直接检索文件:
wget http://download.moodle.org/moodle/moodle-latest.zip
重要提示
您安装 Moodle 的位置被称为dirroot。
如果您使用Moodle Shell(MOOSH),这在第十七章中详细描述,使用 Moodle 管理工具,您可以使用以下命令下载 Moodle 的最新稳定分支:
moosh download-moodle
一旦您将文件移动到您想在 Web 服务器上安装的位置(dirroot),请使用unzip命令或tar(如果您下载了 TGZ 版本)提取文件:
unzip moodle-latest.zip
tar xvfz moodle-latest.tgz
如果您将整个文件夹放置在您的 Web 服务器文档目录中,网站将位于 www.yourwebserver.com/moodle。要从 www.yourwebserver.com 访问您的网站,请直接将内容复制到主 Web 服务器的文档目录中。
重要提示
通过该 URL 访问 Moodle 被称为wwwroot。
下载步骤完成后,您必须创建 Moodle 用于存储其数据的数据库。
创建 Moodle 数据库
Moodle 需要一个数据库来存储其信息。虽然共享现有数据库是可能的,但为 Moodle 创建一个单独的数据库强烈推荐。添加新数据库可以通过托管服务器提供的 Web 界面完成,或者通过命令行。
使用托管服务器
大多数托管提供商都提供了一个专用的 Web 界面来执行基本的数据库操作。或者,您可以使用phpMyAdmin,这是一种开源软件,允许您通过 Web 管理 MySQL 数据库。phpMyAdmin 是大多数 Linux 发行版和许多控制面板的一部分,但它通常配置为不允许创建新数据库。如果这种情况发生,您必须从控制面板中的数据库管理器创建数据库。
phpMyAdmin 允许您在单个操作中执行两个步骤——创建数据库和添加新用户,如下面的屏幕截图所示。我们将创建一个用户packt,并检查使用相同名称创建数据库并授予所有 权限选项:

图 1.6 – 在 phpMyAdmin 中创建 Moodle 数据库和用户
虽然您可以使用现有的数据库用户账户,但为 Moodle 数据库创建一个专用用户是良好的实践。
重要提示
不要使用 MySQL root 账户为您的 Moodle 数据库!
您不需要创建任何表;Moodle 将在安装过程中填充数据库。
通过 Web 界面创建 Moodle 数据库很简单,但大多数技术管理员更喜欢通过命令行工作。
使用命令行
如果您没有访问创建 MySQL 数据库和用户账户的 Web 界面,或者如果您更喜欢使用 Linux shell,您可以通过命令行执行这些步骤:
-
通过输入
mysql -root -p启动数据库命令行工具,并在提示符下输入密码。 -
通过输入
CREATE DATABASE packt;(所有 MySQL 命令都必须以分号结尾)创建一个数据库(称为packt)。 -
通过输入
ALTER DATABASE packt DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;将默认字符集和校对顺序设置为UTF8。 -
创建一个用户和密码(此处为 packt@localhost 和 password),并通过输入
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER ON packt.* TO packt@localhost IDENTIFIED BY 'password';授予数据库访问权限。 -
通过输入
QUIT退出 MySQL 命令工具。
必须使用以下命令行重新加载授权表:
mysqladmin -u root -p reload
通过这样,您已经设置了数据库。现在您需要做的就是创建 Moodle 的数据目录。然后,您就可以开始安装 Moodle 本身了。
创建 Moodle 数据目录
Moodle 将其大部分信息存储在您刚刚创建的数据库中。然而,上传的文件,如作业、课程图片或用户图片,则存储在单独的目录中。Moodle 中的此数据目录通常被称为 moodledata。
重要提示
存放您的 Moodle 数据文件的地址被称为 dataroot。
之后,Moodle 安装程序将尝试创建此目录,但在某些配置中,由于安全限制,此操作可能会失败。为了安全起见,最好手动创建 moodledata 或通过某些系统提供的基于 Web 的文件管理器创建。
重要提示
在您的服务器上创建 moodledata 的位置至关重要,这样它就不能被公开访问——也就是说,在您的网页目录之外。
moodledata 是所有课程作者和学习者上传的文件存储的地方,因此请确保其尺寸足够。您还可以考虑在单独的分区中创建 moodledata。
任何 moodledata 权限应该是 rwxrwx---(chmod –R 0770 moodledata)。如果您使用 0777,服务器上的每个人都将能够访问这些文件。
通过输入 chown –R apache:nobody moodledata 将目录的用户和组更改为您的 Web 服务器(通常将是 apache 或 www-data 和 nobody 或 www-data)。
如果您没有权限在安全位置创建数据目录,请在您的家目录中创建 .htaccess 文件,并确保它包含以下两行:
order deny,allow
deny from all
这两个设置可以防止用户在没有相应权限的情况下访问文件。
我们已经完成了前三个步骤——下载 Moodle、创建数据库和准备 moodledata——这些是运行安装脚本的前提条件。
运行安装脚本
安装脚本执行两个主要操作 – 填充数据库和创建配置文件 config.php。通过在您的网页浏览器中输入 wwwroot(您复制 Moodle 的位置)的 URL 来启动 Moodle 安装程序;Moodle 将识别它尚未安装,并自动开始此过程。
Moodle 安装程序必须设置一个会话 cookie。如果您的浏览器已被配置为触发警告,请确保您接受该 cookie。
第一个屏幕允许您选择安装过程中要使用的语言 – 这不是 Moodle 所使用的区域设置,只是安装的语言:

图 1.7 – Moodle 安装 – 选择语言
以下截图显示了 wwwroot(dirroot)条目和 dataroot 条目的预期值;您可能需要修改 moodledata 的不同之处:

图 1.8 – Moodle 安装 – 确认路径
如果 dataroot 无法找到或没有正确的权限,将显示包含详细信息的错误消息。如果 dataroot 可以直接通过网页访问且不安全,也适用同样的情况。
您必须在以下屏幕上选择您希望使用的数据库。在我的系统上仅安装了 MySQL、MariaDB、Aurora MySQL 和 PostgreSQL 驱动程序。如果您想使用 Oracle 或 MS SQL Server 等其他数据库系统,则必须首先安装相应的 PHP 扩展:

图 1.9 – Moodle 安装 – 选择数据库驱动
此界面使用之前已建立的配置详情。以下截图显示了所需的字段,但如果您选择了除 MySQL 之外的其他数据库驱动程序,则外观可能略有不同:

图 1.10 – Moodle 安装 – 数据库设置
localhost (127.0.0.1),如果数据库位于与网页服务器相同的服务器上,这是正确的。如果它位于不同的服务器上,请指定 IP 地址(最好不解析以提高性能)。
Moodle 安装程序将创建的所有表都将以前缀 mdl_ 开头。只有当您使用同一数据库运行多个 Moodle 安装时,才应更改 Tables prefix 条目。
接下来,Moodle 安装程序会检查某些组件是否已安装。并非所有模块都是必需的 – 请参阅本章的 Moodle 系统要求 部分,以及屏幕上的通知。安装程序还会验证关键的 PHP 设置。如果任何测试未通过,您必须返回到 软件要求 部分,解决任何问题,并在问题解决后重新启动安装过程。否则,某些功能可能无法正常工作,或者安装程序将不会继续,具体取决于模块的重要性:

图 1.11 – Moodle 安装 – 服务器检查
当您确认了服务器检查屏幕后,安装程序将显示 Moodle 的版权声明,您必须确认。此屏幕的出现还意味着 Moodle 配置文件 config.php 已成功创建。如果创建失败(通常是因为权限不正确),安装程序将显示配置文件的内容。您将不得不从屏幕上复制文本,并将其手动粘贴到您的 dirroot 中的 config.php。
一旦您接受了协议(您可以在 docs.moodle.org/dev/License 找到完整的 GPL 许可证全文),所有数据库表都将创建。这个过程可能需要几分钟。
一旦创建并填充了表格,您将看到可以设置管理员账户的屏幕。默认的 用户名 是 admin,出于安全原因应将其更改。您必须填写以下自解释字段:新密码、名字、姓氏和电子邮件地址。在 第五章,管理用户、班级和身份验证 中,所有其他字段将详细解释:

图 1.12 – Moodle 安装 – 设置管理员账户
安装脚本的最后一步要求您输入一些主页设置;即 完整站点名称、站点简称和站点主页摘要。这些主页设置可以在以后修改(请参阅 第七章,增强 Moodle 的外观和感觉)。
将 默认时区 项更改为您的服务器位置,而不是您的位置。安装程序允许您开启 自动注册。现在请暂时禁用此功能,直到您阅读了 第五章,管理用户、班级和身份验证。您还必须提供一个 支持电子邮件(用于您的用户查询)和一个 无回复地址(以避免电子邮件问题)。
一旦输入了这些信息并确认了屏幕,您就可以开始使用 Moodle 了。但是,首先,您必须设置 Moodle 维护脚本的执行。
设置 cron 进程
Moodle 必须定期执行大量后台任务。
重要提示
由cron 进程执行的cron 脚本执行 Moodle 的后台任务。
Moodle 文档中已经有一个关于 cron 的整个页面;您可以在docs.moodle.org/en/Cron找到它。您必须设置 cron 进程;否则,任何定时 Moodle 功能,如计划备份、发送论坛通知、统计处理等,将无法工作。
脚本cron.php位于 admin 目录中,可以通过网络浏览器手动触发(如果安全设置允许)。一旦执行,脚本输出(<yoursite>/admin/cron.php)将显示在屏幕上,然后您需要手动导航回您的 Moodle 系统。
有几种方法可以调用 cron 脚本。最受欢迎的选项是通过wget命令:
wget –q –O /dev/null http://<yoursite>/admin/cron.php
然而,如果这不符合您的设置,请查看docs.moodle.org/en/Cron以获取替代方案。
大多数控制面板都允许您通过 cron 作业管理工具设置计划任务。请注意,这不是 Moodle 的一部分,而是您托管套餐的一部分。或者,您也可以创建一个 crontab 条目,这是一个位于/etc目录中的文件,其中包含所有系统范围的 cron 条目。此文件也可以使用crontab -e手动编辑,但请确保语法正确!
要每分钟运行 CLI cron 脚本,请添加以下行,将<yourpath>替换为您的 Moodle 系统所在的目录(dirroot):
* * * * * /usr/bin/php <yourpath>/cron.php >/dev/null
重要提示
强烈建议每分钟运行 cron 进程!
就这些了。Moodle 现在已准备好使用。下一节将介绍您应该快速完成的两个可选步骤。
完成安装
要确保 Moodle 运行无问题,请转到常规标签页的站点管理菜单中的通知:

图 1.13 – Moodle 安装 – 检查系统通知
在我的安装中,有两个问题 – cron 脚本尚未配置,移动应用尚未启用。我需要修复前者问题;后者可以等到第十一章,启用移动学习。通知区域可能会出现其他消息,您应立即解决它们。
Moodle 在其moodle.net/stats上提供了一些关于其使用的统计数据,要包含在这些数字中,您必须通过站点管理 | 常规 | 注册注册您的 Moodle 站点。Moodle 注册是可选的且免费的,您可以选择公开哪些信息。
重要提示
即使您选择不提供您站点的任何使用模式,仍然强烈建议您注册以接收有关新 Moodle 版本、安全警报和其他重要新闻的信息。
以下为注册表单,以及来自公共统计数据的屏幕截图:

图 1.14 – Moodle 注册和统计数据
这完成了在 LAMP 环境中 Moodle 的安装过程。如果您在这些说明中没有遇到任何问题,或者您的设置与描述的不同,请访问 docs.moodle.org/en/Installing_Moodle,在那里提供了更多安装细节,并且详细说明了例外情况。
通过网页界面安装 Moodle 的另一种方法是使用 命令行界面(CLI),这是下一节的主题。
通过命令行界面安装
Moodle 提供了一个 CLI,让您可以从 Unix 命令行提示符执行多个管理任务。Windows 系统没有 CLI。基于 CLI 的安装对于需要自动设置的环境很有用,例如,在托管多个 Moodle 实例的环境中。
CLI 不适合胆小的人,所以使用时要小心。您必须以网络服务器用户身份执行安装脚本,通常是 www-data 或 apache。您可以在交互模式下运行安装脚本 install.php(您将需要手动输入任何参数)或非交互模式,其中脚本将静默运行。
从您的 dirroot,您可以按照以下方式启动交互式脚本:
sudo –u www-data /usr/bin/php admin/cli/install.php
更有趣的是 CLI 的非交互模式,因为这样可以用于脚本和自动化目的。可以使用 --help 命令显示所有可用参数的列表:
sudo –u www-data /usr/bin/php admin/cli/install.php --help
执行命令的输出显示在下述屏幕截图中:

图 1.15 – 通过 CLI 安装 Moodle
一个示例命令行可能看起来像以下这样,您将需要根据您的本地设置调整参数:
sudo -u www-data /usr/bin/php admin/cli/install.php --wwwroot=http://123.54.67.89/moodle --dataroot=/var/moodledata/ --dbtype=mysqli --dbhost=localhost --dbname=moodle --dbuser=moodle --dbpass=password --fullname=moodle4 --shortname=moodle4 --adminpass=Password123! --non-interactive --agree-license
可以通过 CLI 管理更多 Moodle 任务,例如重置密码或将 Moodle 设置为维护模式。我们将在本书的适当位置展示相关语法,并在 第十七章 与 Moodle 合作 管理工具 中专门介绍 CLI。
一旦您的 Moodle 系统启动并运行,您需要确保它保持最新。以下章节将介绍手动和通过命令行更新 Moodle。
更新 Moodle
我们在本章前面提供了 Moodle 发布日历的概述。通常不需要安装每个小版本发布;然而,有几个场景您应该升级您的 Moodle 系统:
-
已发布安全补丁
-
已添加新功能
-
已修复影响您设置的 bug
-
已发布一个主要版本
-
您的设置支持周期即将结束
Moodle 系统主要可以通过两种方式更新:你可以手动运行更新(使用 Web 界面或 CLI)或者使用 Git 命令保持更新。这两种过程将在本节中描述。
无论哪种方式,在开始之前,请确保将 Moodle 置于维护模式,以确保在更新期间没有其他用户登录。转到站点管理 | 服务器 | 维护模式,选择启用维护模式,并输入维护信息:

图 1.16 – 启用维护模式
您也可以使用 Moodle 的 CLI 将其置于维护模式,如下所示:
sudo –u www-data /usr/bin/php admin/cli/maintenance.php --enable
使用--enablelater=MINUTES标志,您可以在进入 CLI 维护模式之前指定时间段,这在运行自动更新时很有用。
要切换回正常模式,请使用--disable参数而不是--enable,如下所示:
sudo –u www-data /usr/bin/php admin/cli/maintenance.php –disable
一旦 Moodle 被置于维护模式,您就可以更新您的 Moodle 系统了。
手动更新 Moodle
手动更新 Moodle 的高级过程如下:

图 1.17 – 更新 Moodle
如果您从 Moodle 的先前版本更新,过程相同。但是,请务必查阅docs.moodle.org/en/Upgrading中的升级文档,以了解任何特定版本的问题。
重要提示
您至少需要版本 3.6 才能直接更新到 Moodle 4。如果您是从更早的版本升级,您必须首先升级到 3.6。
在您安装新更新之前,强烈建议您运行moodledata和dirroot(特别是config.php)。
现在,让我们一步一步地通过更新工作流程:
- 新版本
一旦您创建了备份,就是时候用最新代码替换旧版本的dirroot了。只需将新文件复制到现有文件上;现有文件将被覆盖,除了config.php,它不是下载包的一部分。
或者,您可以重命名旧的dirroot文件夹并创建一个新的目录。但是,您必须从旧目录复制以下文件和目录到新的dirroot:
-
config.php -
.htaccess(如果存在) -
任何已创建的主题文件夹
-
任何修改过的语言包
-
本地目录的内容
-
任何不在
local中的第三方模块和自定义代码
一旦您前往 Moodle 站点的位置并以管理员身份登录,系统将识别到有新版本可用并自动启动安装程序。
第一屏显示新版本的构建(这里为 4.0.2)并要求您确认是否要继续升级:

图 1.18 – 更新 Moodle – 新版本
- 服务器检查
接下来,会显示一个屏幕,它链接发布说明并执行与安装期间描述的相同的服务器检查。
- 插件检查
Moodle 插件,无论是核心(标准)还是第三方(附加),在升级 Moodle 时有时会引起问题。源/状态 列突出显示任何需要采取的行动或发现的问题,你应该解决任何问题。有关更多详细信息,请参阅 第八章,理解 Moodle 插件:

图 1.19 – 更新 Moodle – 插件检查
- 系统升级
一旦确认此屏幕,实际的系统升级就开始了,在此过程中会创建新的数据库字段,并在必要时修改数据。
- 新设置
Moodle 中添加的任何新系统设置都会显示出来,并且可以立即更改。例如,在以下屏幕截图中,已添加一个新的 每页参与者数量 参数:

图 1.20 – 更新 Moodle – 新设置
一旦升级过程完成,请检查 通知 页面。同时,别忘了关闭 维护模式!
手动更新 Moodle 的一个替代方法是利用 CLI,我们将在下一小节中介绍。
通过 CLI 更新 Moodle
如预期的那样,Moodle 更新也可以使用已经讨论过的 CLI 来运行。一旦你备份了数据并更新到最新版本,你只需要运行以下脚本:
sudo –u www-data /usr/bin/php admin/cli/upgrade.php --non-interactive
通过 CLI 更新 Moodle 与 Git 对 Moodle 源代码的检出相结合时更加强大。这正是我们将要探讨的内容。
存在一种替代方法来保持当前版本的更新,它使用开源版本控制系统 Git。所有已签入的 Moodle 代码都通过此方法提供,它只允许你更新已更改的模块。
设置 Git 是一个繁琐的过程,这超出了本书的范围。你可以在 docs.moodle.org/en/Git_for_Administrators 找到详细信息。然而,一旦设置完成,Git 就是一个非常高效的系统,尤其是在与前面提到的 CLI 结合使用时。以下是一个示例脚本,它获取最新的源代码版本,将 Moodle 设置为维护模式,合并旧代码与新代码,运行升级脚本,并禁用维护模式:
git fetch
sudo -u www-data /usr/bin/php admin/cli/maintenance.php
--enable
git merge origin/cvshead
sudo -u www-data /usr/bin/php admin/cli/upgrade.php
sudo -u www-data /usr/bin/php admin/cli/maintenance.php
--disable
git fetch 命令的执行可以在以下屏幕截图中看到:

图 1.21 – 获取新的 Moodle 版本
如果你修改了任何核心代码,可能会出现潜在冲突,必须解决(Git 会提示你这样做)。
大多数商业 Moodle 提供商使用 Git 来保持他们的 Moodle 实例更新。如果你熟悉使用 shell 脚本,这应该是你的首选方法,因为它简化了更新工作流程并减少了可能出现的问题数量。
还有一个我们尚未解决的问题:你如何知道有更新可用?这正是更新通知的作用所在。
更新通知
Moodle 可以通过电子邮件或消息通知你关于新版本的信息。为了支持此功能,网站管理 | 服务器 | 更新通知下的自动检查可用更新设置必须保持启用,如下所示:

图 1.22 – 更新通知
在你的生产网站上,所需代码成熟度选项应设置为稳定版本;其他成熟度级别应仅在测试实例上考虑。对于通知新****构建参数也是如此。
或者,你可以通过访问 网站管理 | 常规 | 通知 来检查更新(核心和插件)。这些信息通过你之前设置的 cron 进程每 24 小时更新一次,并考虑了更新通知设置。你也可以通过 检查可用 更新 按钮来启动请求:

图 1.23 – 更新通知
这部分关于手动和通过命令行更新 Moodle 网站的说明到此结束。
摘要
本章教了你如何安装和更新 Moodle。
在提供概述描述最合适的设置后,我们概述了必要的软件和硬件要求,并描述了 Moodle 的版本策略和发布日历。
然后,我们介绍了通过网页和强大的 CLI 安装 Moodle,以及对于 Moodle 升级,我们简要介绍了 Git。
Moodle 使用便携式软件架构并便于使用标准开源组件,这使得它可以在多个平台上安装。然而,这也意味着在不同环境中必须考虑不同的特性和怪癖。
现在系统已经运行起来,在下一章中,我们将探讨 Moodle 的组件,这将帮助你更好地理解系统以及如何管理它。
第二章:探索 Moodle 系统
现在您的 Moodle 系统已经启动并运行,我们将查看构成学习平台的组件。将这些视为 Moodle 构建的基础。
在本章中,您将了解 Moodle 的架构,Moodle 的主要组件是什么,以及其数据存储在哪里。Moodle 拥有现代直观的用户界面,需要一点时间来适应。您将了解其主要导航以及需要帮助时如何找到帮助。在基于 Web 的应用程序中处理文件并不总是直接的。因此,您将学习 Moodle 的文件管理机制以及如何配置回收站。
在本章中,我们将涵盖以下主题:
-
理解 Moodle 架构
-
以管理员身份导航 Moodle
-
Moodle 中的文件管理
-
回收站
到本章结束时,您将更多地了解 Moodle 的内部结构,如何作为管理员与之协作,以及文件是如何管理的。
理解 Moodle 架构
首先,在介绍 LMS 应用层的内部组件之前,我们将查看 Moodle 所基于的整体架构。
我们将采取自上而下的方法,首先查看整体架构,然后再深入探讨 Moodle 核心的结构。我们将从最低级别开始,那里我们将处理文件及其管理。
LAMP 架构
Moodle 是在开源的 LAMP 框架上开发的,该框架由 Linux(操作系统)、Apache(Web 服务器)、MySQL(数据库)和 PHP(编程语言)组成。由于这些组件的可移植性和 Moodle 本身的模块化(这就是“M”的含义),支持广泛的操作系统、数据库系统和 Web 服务器。然而,尽管 Moodle 可以在其他技术堆栈上运行,但我们将专注于 LAMP,因为它在 Moodle 管理员中证明是最受欢迎的设置。
下面的图表展示了整体架构的简单概述:

图 2.1 – Moodle 的整体架构
让我们更详细地看看 Moodle 整体架构的组件:
-
Moodle 核心是人们谈论 Moodle 时经常提到的内容。这也是我们在上一章中安装的,并将在本章中介绍。
-
Moodle 插件:虽然 Moodle 核心是一个强大而全面的 LMS,但很少有网站仅依赖于基本系统。相反,附加模块补充了标准 Moodle 的功能集,以定制平台以满足个别需求。这些附加模块被称为 Moodle 插件,它们主要是社区贡献的,是对标准 Moodle 的扩展,以适应特定的用例。在撰写本文时,官方 Moodle 插件数据库中有近 2000 个(!)条记录,在moodle.org/plugins。
重要提示
Moodle LMS 是有效的标准 Moodle 加上 – 可选地 – 一个或多个 Moodle 插件。
Moodle HQ 提供了一系列令人兴奋的插件。Moodle Workplace 是为企业和组织培训设计的商业产品,结果是一个强大且灵活的工作场所学习平台。有关 Moodle Workplace 的更多信息,请访问 moodle.com/workplace 或阅读 Packt Publishing 出版的《使用 Moodle Workplace 的企业学习》。
-
PHP 是 Moodle 所使用的编程语言(伴随 HTML、JavaScript 和 CSS 文件)。它是唯一不能被任何其他替代品替换的组件。必须安装特定的 PHP 库 – 请参阅第一章,安装 Moodle。
-
MySQL 是大多数开源应用的首选数据库,但其他系统,如 Microsoft SQL Server、Oracle 和 PostgreSQL,也完全得到支持。在 Oracle 收购 MySQL 之后,MySQL 的分支 MariaDB 在 Moodle 管理员中变得非常流行。
-
Apache 已成为大型 Web 应用的默认标准,紧随其后的是 Microsoft IIS。这两个 Web 服务器都像支持 PHP 的其他服务器一样得到支持,例如 nginx。本书将专注于 Apache,这是 Moodle 设置中最受欢迎的选项。
-
操作系统:最低级别是操作系统。虽然Linux是首选平台 – 因为所有代码都在这里开发和测试 – 但也支持其他操作系统,如 Windows、Mac OS X 和各种 Unix 衍生品。
下面的图示展示了 Moodle 架构中各元素之间的交互:

图 2.2 – Moodle 底层组件之间的交互
用户通过网页浏览器界面或移动 Moodle 应用程序发出请求。网页浏览器将请求传递给网页服务器(们),然后调用负责该请求的 PHP 模块。PHP 模块通过一个动作(查询、更新、插入或删除操作)调用数据库(们),返回所需的数据。基于这些信息,PHP 模块将数据(通常是 HTML 或 JavaScript)返回给网页服务器(们),然后传递要显示的信息回用户的浏览器或应用程序。
我们最感兴趣的组件是 Moodle 核心,我们将在下一部分更详细地探讨。
Moodle 核心
现在,让我们更详细地看看 Moodle 核心层。以下图示展示了 Moodle 的主要构建块:

图 2.3 – Moodle 的构建块
Moodle 区分代码(主要用 PHP、HTML 和 CSS 编写)和数据(主要通过 Moodle 界面添加的值和文件)。
Moodle 库、模块(如资源和活动)、块、插件、管理工具和其他实体在代码中表示。它始终存储在称为 dirroot 的 Moodle 目录中,该目录在上一章的安装过程中指定。代码包括处理后端(服务器)和前端(用户界面)操作的所有元素。
Moodle 课程、用户、角色、组、能力、学习计划、成绩以及其他数据,例如教育者添加的学习资源、学习者添加的论坛帖子以及管理员添加的系统设置,主要存储在 Moodle 数据库中。然而,如用户图片或上传的作业等文件存储在另一个称为 moodledata 的 Moodle 目录中,位于名为 dataroot 的目录中。有关文件的信息(如名称、位置、最后修改时间、许可证和大小等元数据)存储在数据库中,并引用相应的文件。
重要提示
Moodle 在内部管理其文件,重要的是要强调,干扰 moodledata 中的任何文件都将破坏应用程序。
即使是将文件从一个文件夹复制到另一个文件夹或手动添加文件,也会破坏您系统的完整性,这意味着无法预测后续行为。内部,Moodle 使用称为 SHA1 哈希的机制。Moodle 完全支持 Unicode 文件名,并在同一文件被两次使用(即使是由不同的用户使用)时避免冗余存储。再次强调,您不得在系统级别修改任何 Moodle 文件!
现在,让我们更详细地看看 Moodle 文件区域 – 目录结构 – 是如何组织的。
代码和数据位置
尽管 Moodle 负责组织其代码和数据,但通常了解文件在您的学习系统中的位置是有益的,例如在安装附加组件或手动应用补丁时。
系统文件 – 运行 Moodle 所需的文件 – 位于 dirroot(您的 Moodle 安装根目录)下的几个目录中。以下表格显示了文件夹名称、简要描述以及本书中涵盖该主题的章节:

图 2.4 – 代码和数据位置
moodledata 目录(dataroot)的组织结构如下:

图 2.5 – moodledata 目录
在执行更新之前出现问题时,有时需要删除缓存数据和 Moodle 创建的任何临时信息。这些数据位于前表中所示结构中的相应目录中。换句话说,一旦所有人都登出,您就可以安全地删除名为cache、filter、localcache、lock、models、muc、sessions、temp和trashdir的目录中的任何文件。清除可以通过手动完成,或者更好的是通过 Moodle 界面中的网站管理 | 开发 | 清除缓存 | 清除所有缓存来完成。
这部分关于 Moodle 架构的介绍到此结束,它处理了 LAMP 框架和 Moodle 的主要组件,然后我们深入到 Moodle 核心和代码和数据文件的位置。
作为管理员导航 Moodle
在本节中,您将学习如何使用 Moodle,包括网站管理部分的横向导航以及如管理员搜索、书签以及访问各种帮助和支持网站和渠道的实用工具。
管理员的基本导航项如下:
-
网站菜单:贯穿所有页面的主菜单;网站管理项将打开管理员菜单。
-
管理员菜单:访问所有管理员部分和子部分。作为管理员,您将在这里执行大多数任务。我们将在本书的剩余部分介绍这些菜单和子菜单的所有方面。
-
用户菜单:访问个人设置,例如用户资料、偏好设置或选定的语言。
-
管理员搜索:搜索功能,我们将在后面介绍。
-
编辑模式切换:在编辑模式和非编辑模式之间切换。
-
块抽屉:Moodle 块放置于此;要更改块抽屉,必须激活编辑模式。
以下截图突出了以下导航元素:

图 2.6 – Moodle 导航
前一张截图显示的项目可能因您的系统而异。根据激活的功能、使用的主题和屏幕大小,一些管理员菜单项可能移动到更多下拉菜单,或者语言设置可能出现在用户菜单中。
Moodle 的用户界面是从版本 4 开始从头构建的——导航路径已消失,之前无处不在的块已降级为块抽屉。这次重新开发也影响了导航管理功能,我们将在下一节中介绍。
管理员搜索功能
提供了一个搜索功能,帮助您识别位于“网站管理”菜单(如前一张截图所示,已圈出)上方的管理部分中的任何设置。
当搜索任何允许您立即更改设置的术语时,Moodle 会以展开的形式显示结果。例如,当搜索“日历”时,会出现多个部分作为结果,您可以直接在每个部分中更改,而无需导航到每个单独的部分进行更改。
在升级到较旧版本的 Moodle 时,配置设置已被重新组织,其位置有时难以追踪,此时搜索功能也非常有益。
接下来是管理员书签,这可能会减少对管理员搜索功能的使用。
管理员书签
书签显示在管理员书签块中,可以通过开启编辑模式,打开块抽屉,并从添加一个块列表中选择该块来添加。它们允许您将任何管理员菜单添加为书签,以便轻松访问经常需要的页面。选择添加此页书签来添加书签,选择取消此页书签来删除它。当您在书签页面上时,Moodle 会自动显示后者选项:

图 2.7 – 管理员书签
在前面的屏幕截图中,已经有两个页面被添加为书签(浏览用户列表和自定义报告),并提供提到的链接来取消当前标记。
当您知道您要找什么时,管理员搜索和书签非常有用。接下来是 Moodle 文档,当您在使用功能或需要进一步支持时,它将为您提供帮助。
Moodle 文档和帮助
整个 Moodle 文档都在线,可在docs.moodle.org找到。如果您想提供自己的文档,请通过访问站点管理 | 外观 | Moodle 文档来修改Moodle 文档根目录设置。您还可以在文档页面链接中选择文档使用的语言选项,并在该屏幕上启用在新窗口中打开选项。
在每个页面的底部,您将看到一个支持图标。一旦选择,它将显示以下帮助相关链接:
-
帮助和文档:参考 Moodle 文档中的相关页面。
-
服务和支持:链接到moodle.com/help,在那里提供来自 Moodle 认证服务提供商的专业服务。
-
联系站点支持:将打开标准电子邮件客户端,并将支持联系人的收件人填写好。您可以通过访问站点管理 | 服务器 | 支持联系人来更改支持电子邮件地址。此功能对您的用户来说更为相关,而不是作为管理员您自己。
除了在线文档外,一些功能还提供内联帮助,以问号符号表示。点击后,将出现一个帮助窗口,提供与相应主题或设置相关的帮助:

图 2.8 – Moodle 帮助
例如,当在上传用户部分点击帮助和文档链接时,以下文章将被打开:docs.moodle.org/400/en/Upload_users。对于 Moodle 的每个版本,都会发布单独的 Moodle 文档。上述链接来自 4.0 版本,其中大多数页面的文档存在多种语言。
当您首次访问某些页面时,Moodle 将显示所谓的用户导游。例如,当您导航到我的课程时,以下弹出窗口将显示:

图 2.9 – 用户导游
我们将在第七章中详细介绍用户导游,增强 Moodle 的外观和感觉。
Moodle 社区正在持续增长,在撰写本文时,已有超过 100 万注册用户(是的,是 100 万!),其中超过 5%是活跃的。如果您在 Moodle 文档中找不到 Moodle 问题的解决方案,请使用屏幕顶部的搜索功能在moodle.org。按照优先级顺序,搜索将提供已提到的 Moodle 文档、最活跃的用户论坛和 Moodle Tracker,它跟踪所有问题和功能请求(tracker.moodle.org)。在 Moodle 论坛中进行搜索通常会得到大量的链接。使用搜索论坛块中的高级搜索区域来缩小搜索范围。如果您仍然找不到问题的解决方案,这种情况相对较少,请在相关论坛上发帖提问;很可能有人会进一步帮助您。
一个可能也感兴趣的流行网站是 Moodle 学院(moodle.academy),它包括一个管理员学习路径,涵盖关于基本 Moodle 管理的短小、自定步调的课程。
这部分内容介绍了 Moodle 的导航,其中包括了网站管理菜单和各种有用的工具,如管理员搜索、管理员书签和 Moodle 文档。
Moodle 文件管理
这部分内容全部关于文件:如何访问它们,它们如何在文件夹中组织,如何上传它们,如何配置私有文件,复制和链接之间的区别,文件类型,增加上传文件限制,以及如何通过回收站处理已删除的文件。这需要很多内容,所以让我们开始吧。
在基于网络的程序中处理文件并不总是直接的。虽然 Moodle 提供了一个用户界面来执行此任务,但有时作为管理员,您可能需要绕过此机制并使用其他方法。首先,让我们看看内置的文件处理,这是学生和教师也会使用的。
Moodle 文件管理界面
Moodle 提供了一个基本的文件管理界面,允许您上传、移动、删除和重命名文件和目录。您还可以从 Dropbox 等第三方服务复制或链接到文件;同样,Moodle 不是一个内容管理系统。
我们已经讨论了 Moodle 在系统级别上存储文件的方式——那些我们不应该触碰的文件!在应用级别上,它根据 Moodle 的结构来组织文件:
重要提示
在 Moodle 中,一个文件始终与使用它的特定 Moodle 内容相关联。

图 2.10 – Moodle 文件
文件以树状结构组织,主要有三种主要分支:
-
分类/课程/活动和资源
-
用户(私有文件和个人备份)
-
网站首页(Moodle 的首页)
我们将在后续阶段处理所有这些概念,所以现在,让我们先假定它们是正确的。课程按类别(和子类别)排列,包括活动和资源,通常在活动和资源内部还有进一步的子目录。
在您的系统中有多位用户,每位用户都有一个专用的文件区域,可以从 Moodle 的任何地方访问,但只有一个网站首页。记住,一个文件始终与使用它的特定 Moodle 内容相关联,这体现在类似目录的结构中:

图 2.11 – Moodle 文件夹
现在我们已经了解了文件和文件夹的组织方式,让我们看看如何上传数据和创建目录。
上传文件
文件的上传通常通过拖放完成。虽然这个功能对于学习和培训人员至关重要,但作为管理员,您也必须不时上传文件,例如,通过 CSV 文件批量上传用户。
添加单个或多个文件非常简单:只需在您的资源管理器(Windows)或 Finder(Mac)中选择文件,然后将它们拖放到以下截图所示虚线框内的指定区域:

图 2.12 – Moodle 文件和文件夹
当文件上传后,点击一次,您可以选择下载或删除文件。如果选中的文件是压缩归档,您可以选择解压它。此外,文件的相关元信息(名称、作者、许可、路径、图标、最后修改时间、创建时间和大小)将在窗口底部显示,如下截图所示:

图 2.13 – Moodle 文件详情
对于某些文件操作,必须使用文件选择器,这是一个在需要将文件添加到 Moodle 中特定对象时使用的工具。用户可以从多个文件源中选择,这些文件源被称为存储库。可以通过文件区域左上角的添加…按钮访问文件选择器。我们将在第十章 配置 技术功能 中处理存储库。
与上传文件密切相关的是配置上传限制。
上传限制
您的网站默认设置了 2 MB 的文件上传限制。如果您需要支持大于 2 MB 阈值的文件,您必须提高限制。
在您的 php.ini 文件中(使用 php -i 命令找到其位置,并定位到 Loaded Configuration File 条目),修改以下两行;<value> 表示最大限制(支持多种输入格式,例如,20M 或 20971520):
-
upload_max_filesize = <``value> -
post_max_size = <``value>
如果您无法访问 php.ini 文件,请在您的 Moodle 主目录中创建一个 .htaccess 文件,并添加以下两行:
-
php_value upload_max_filesize = <``value> -
php_value post_max_size = <``value>
您还必须在某些系统上增加 LimitRequestBody 参数,通常在 Apache httpd.conf 配置文件中找到。您可能还需要修改数据库配置,例如 max_allowed_packet 的大小:

图 2.14 – Moodle 上传限制
一旦应用了这些更改,请确保在 站点管理 | 安全 | 站点安全设置 下的 最大上传文件大小 参数已设置为 站点上传限制。您还可以通过 私有文件空间 参数更改私有文件的配额。在更改这两个值时,请记住,它们可能会分别影响带宽和磁盘空间。
对于像高质量学习资源这样的非常大的文件,能够通过(安全)FTP 上传内容然后使用文件选择器内置的解压缩功能将非常有帮助。然而,无法直接通过 FTP 上传文件。相反,您必须使用文件系统存储库,这将在第十章 配置 技术功能 中详细讨论。
现在您已经熟悉了上传文件,让我们来处理属于个人用户个人的个人文件。
私有文件
每个用户都有一个区域,可以在此处存储和管理个人文件。这些文件只对拥有私有文件的用户可见。在此受保护区域中存储的任何项目都可以在整个网站上使用。私有文件可以通过文件选择器、私有文件块或通过用户菜单中的私有文件链接直接访问:

图 2.15 – Moodle 文件选择器
处理文件和目录与其他文件的处理方式相同。然而,您可能已经在前面的屏幕截图中的 PDF 文件中注意到了链接图标,这很自然地引出了以下小节。
链接还是复制?
默认情况下,Moodle 中的文件会被复制。当您从源(例如,您的计算机或您的私人文件)添加文件时,它将被复制,这意味着源文件和结果文件在逻辑上会被分离。例如,如果您在您的私人文件中存储了一个图像,并在三个不同的课程中使用它,那么这三个图像在逻辑上会有三个副本。如果您更改私人文件中的源文件,这三个图像将不会受到影响。
Moodle 还支持链接文件,也称为文件别名。让我们继续使用相同的例子,但这次是三个图像被链接。如果源文件被更改,课程中的三个文件也会相应更改。请注意,链接文件有一些访问限制;例如,讲师 A 可能无法链接到讲师 B 的文件。
当您从一个支持链接的源(存储库)中选择文件时,会提供一个选项来链接到****该文件:

图 2.16 – Moodle 文件 – 复制和链接
Moodle 会跟踪链接文件,并保证不会出现不一致的情况:
-
当删除链接文件时,每个链接都会创建文件副本
-
当链接文件被覆盖时,所有链接都会更新
-
当文件覆盖链接时,文件会被“分离”
链接和复制是关于文件内部处理方式的问题;接下来是文件类型,它决定了用户下载文件时的处理方式。
文件类型
Moodle 不限制用户可以上传的文件类型,例如,课程中的作业。Moodle 为最常见的文件类型预定义了图标显示和将打开的程序,例如 PDF 文件或 PowerPoint 文档。然而,如以下屏幕截图所示,您可以通过访问站点管理 | 服务器 | 文件类型来添加新的文件类型并查看、修改和删除现有文件类型:

图 2.17 – Moodle 文件类型
当您通过屏幕底部的按钮添加新的文件类型时,您必须提供文件的扩展名和其MIME 类型。此外,您可以选择选择文件图标、类型组(例如图像或文档)、描述类型、自定义描述(如果描述类型是在此表单中指定的自定义描述)、替代语言字符串(如果选中描述类型)和MIME 类型的默认图标。
到目前为止,我们已经介绍了文件在 Moodle 中的存储、组织和添加方式。现在,让我们看看当文件被删除(意外删除)时会发生什么。
回收站
作为管理员,我们都有过这样的经历:用户意外删除了一个文件、一个包含所有提交的作业,甚至是一个完整的课程——当然,通常是在紧急截止日期附近。恢复丢失的数据始终是最高优先级,您将在接下来的一个小时内或更长时间内翻阅昨晚的备份,以帮助您的惊慌失措的同事。
为了避免类似描述的场景,Moodle 提供了一个回收站,允许用户恢复误删除的课程元素和课程。该功能默认开启,但作为管理员,您有一系列选项来配置工具的行为。
要访问回收站配置,请转到网站管理 | 插件 | 管理工具 | 回收站,您将看到三组设置:

图 2.18 – Moodle 的回收站设置
回收站选项如下:
-
启用课程回收站选项收集课程内删除的任何资源和活动。这些项目将保留在项目****生命周期参数设置的时间内。
-
启用分类回收站选项收集分类内删除的任何课程。这些课程将保留在课程****生命周期参数设置的时间内。
-
当选择自动隐藏复选框时,相应的菜单项只有在用户的回收站包含任何元素时才会显示;否则,它将从课程或类别的更多菜单中隐藏。
当相应的生命周期到期日期过去后,项目和课程将从回收站永久删除。删除的课程项目或课程类别的生命周期在以下图中表示:

图 2.19 – Moodle 回收站
初始时,回收站可能是空的,或者可能已经包含已删除的项目或课程(在我们的例子中,有两个)。当一个元素被删除时,它会被移动到用户的回收站,可以恢复或永久删除。假设在此期间,元素的指定生命周期已过期。在这种情况下,文件或课程将被永久删除,以及其他任何到期日期已达到的元素。
如前所述,回收站是即插即用的;如果您的回收站没有按预期工作,请检查以下三个配置:
-
回收站的大多数流程都是由 cron 进程触发的,例如,我们刚才提到的常规清除机制。因此,确保 cron 进程正确设置并且每分钟运行一次至关重要(请参阅第一章,安装 Moodle中专门的设置 cron 进程部分)。
-
内部,回收站使用 Moodle 的备份和恢复功能。特别是,必须在
backup_auto_activities)和backup_auto_users)上启用以下两个设置。此外,在通用恢复默认页面必须勾选restore_general_users)。关于这些设置的更详细信息,请参阅第十六章,避免失眠之夜 – Moodle 备份 和恢复。 -
如果您的用户在使用回收站时遇到困难,请确保他们的角色中未撤销任何必需的能力。这些是tool/recyclebin:viewitems、tool/recyclebin:restoreitems和tool/recyclebin:deleteitems。关于角色和能力的内容将在第六章,管理权限、角色 和能力中提供。
学习如何使用回收站结束了关于文件及其管理的这一节。
摘要
在本章中,我们学习了 Moodle 核心的构建块看起来是什么样子以及它们的位置。此外,我们还从管理员的角度探讨了新的直观用户界面。最后,我们处理了文件、文件夹和回收站。
如我们在上一章所学,Moodle 可以安装在多种操作系统上,支持广泛的数据库,并且可以与不同的 Web 服务器一起使用。由于 Moodle 的开放性,其所有组件都可以无限制地访问。同样,Moodle 可以处理任何类型的文件,无论其类型或大小。为学习者、教育者和管理员提供直观且现代的用户界面。
现在您的系统已经启动并运行,您也知道了它的内部结构,是时候在下一章处理课程、用户和角色了。
第三章:探索课程、用户和角色
本章的目标是快速概述 Moodle 的基础:课程、用户和角色。
这三个概念本质上是相互交织的,任何其中一个都不能在没有其他两个的情况下使用。我们将处理这三个核心元素的基本知识,并展示它们是如何协同工作的。
Moodle 课程是 Moodle 的核心,因为学习在这里进行。教师上传学习资源,创建活动,协助学习,评分工作,监控进度等。另一方面,学生阅读、收听或观看学习资源,参与活动,提交作业,与他人协作等。您将了解课程及其在类别中的组织方式。您还将了解课程的关键组成部分,即活动和资源。
Moodle 用户是访问我们 Moodle 系统的个人。典型的用户是学生和教师/培训师,但还有其他人,如教学助理、经理、家长、评估者、考官或访客。当然,还有管理员!在简要介绍两种不同类型的用户集合:班级和组之前,我们将介绍身份验证的基本概念——如何获取访问 Moodle 的权限,以及注册——如何获取访问课程的权限。
Moodle 角色实际上是权限,它指定了用户可以访问哪些功能,以及他们可以在哪里和何时(在 Moodle 中)访问它们。您将熟悉角色、上下文和能力等概念,这些对于控制 Moodle 中的权限至关重要。
请记住,本章仅涵盖这三个核心元素的基本概念。专门的章节——第四章,管理课程和注册,第五章,管理用户、班级和身份验证,以及第六章,管理权限、角色和能力——将更详细地处理这三个概念。
在本章中,我们将涵盖以下内容:
-
核心 Moodle 概念的概述
-
探索 Moodle 课程
-
探索 Moodle 用户
-
探索 Moodle 角色
到本章结束时,您将很好地理解 Moodle 的三个核心概念:课程、用户和角色。
核心 Moodle 概念的概述
让我们看一下以下图表,以给您一个课程、用户和角色的概述。它显示了这三个概念的核心地位以及其他功能如何与之相关。再次强调,所有这些复杂性都将适时处理,所以现在,请先熟悉一些 Moodle 术语。

图 3.1 – 核心 Moodle 概念
让我们从左下角开始,以大约顺时针的方向遍历金字塔。用户必须通过身份验证过程才能获得访问 Moodle 的权限。然后他们必须通过注册步骤来参加课程,这些课程本身被组织成类别。分组和群体是分别在课程级别或网站范围内分组用户的不同方式。用户被授予角色,特别是上下文,这些是 Moodle 的封闭区域;角色的范围通过配置权限来指定。
图表还展示了鸡生蛋,蛋生鸡的情况。如果我们从用户开始,我们就没有课程可以让他们注册;如果我们从课程开始,我们就没有可以参加的用户。不过不用担心——Moodle 允许我们在管理区域之间来回切换,并且经常同时执行多个任务。
一篇关于enrol vs enroll语言争议的简短笔记,这个争议似乎和 Moodle 本身一样古老。虽然这本书必须用美式英语编写,但我们决定使用英国英语拼写这个术语,主要有两个原因:首先,在 Moodle 内部,enrolment一词被广泛使用——例如,作为批处理文件中的参数——其次,Moodle Docs 使用enrol(毕竟 Moodle 是澳大利亚的)。所以,enrol和enrolment就这样定了!如果你因此发疯。或者疯狂。或者两者兼而有之。
现在你已经得到了一个高级概述,让我们从三角形的顶部角落开始,处理课程。
探索 Moodle 课程
课程是 Moodle 的核心,因为这是内容呈现给学习者并且大多数学习和协作发生的地方。
在接下来的部分中,首先,我们将介绍课程中最基本的两个学习元素:资源和活动。然后,我们将查看组织课程层次结构的类别。最后,你将创建你的第一个课程。
重要注意事项
Moodle 是一个以课程为中心的系统。
资源和活动
Moodle 管理活动并在课程中存储资源,大多数学习都发生在这里:
-
资源是学习元素,其中学习者是被动的一例如,可以阅读 PDF 文档,可以导航到 URL,可以收听播客,或者可以观看视频
-
活动是学习元素,其中学习者是活跃的并且更加投入——例如,在讨论论坛中发帖,回答反馈问卷,与他人合作编写 FAQ,或者在基于 SCORM 的测验中回答问题
资源和活动可以按任何顺序排列,并且可以通过访问限制和活动完成标准的组合来指定依赖关系。为了说明内容的顺序与非顺序工作原理,让我们看看一个示例混合学习课程。在我们的例子中,这包括三个阶段(在 Moodle 中称为主题),但任何其他结构都是可能的:准备(研讨会前)、网络研讨会(面对面)、后续(研讨会后):

图 3.2 – 样本课程内容
在准备部分,参与者可以阅读提供的 PDF 文档并观看激励视频。他们还被要求在论坛中介绍自己,以便与会者在活动开始前开始建立联系。虽然前两个活动是可选的,但介绍是强制性的,并且是参加研讨会的先决条件。在提供讲义之前,培训师必须标记网络研讨会活动已完成。后续活动包括四个活动:必须达到测验的一定百分比才能完成评估,必须在颁发文凭(通过第三方插件)之前提交反馈问卷。只有当所有三个活动都完成后,才会授予校友论坛的访问权限。
课程分类
分类作为课程的容器,并且可以拥有子分类、子子分类等。这种层次结构类似于您计算机上文件和文件夹的排列,其中分类类似于文件夹,课程类似于文件:

图 3.3 – 分类、课程、活动和资源
Moodle 随带一个默认分类,称为 分类 1,足以展示课程的基础知识。我们将在 第四章 管理课程 和 注册 中更详细地讨论分类。
重要提示
一门课程始终属于一个分类。它不能属于多个分类,也不能没有分类。
创建 Moodle 课程
创建新课程的最快方式是通过 网站管理 | 课程 | 添加新课程。现在,让我们专注于两个必填字段,即 课程全名 和 课程简称:
-
输入课程全名(在此,我们使用了
算法与数据结构 I),该名称将在 Moodle 的多个位置显示。 -
输入课程简称(在此,我们使用了
ALGDS1),该简称默认用于识别课程。

图 3.4 – 创建 Moodle 课程
您还可以看到已提到的默认课程分类,分类 1。要更改其名称或添加其他分类和子分类,您需要在顶部菜单中选择相应的选项。
目前,我们将保留所有其他字段为空或使用其默认值,并通过点击底部保存并显示按钮来保存课程。显示的屏幕显示了课程的基本框架,没有任何内容,除了一个公告论坛。
当你选择参与者标签时,你会看到你的账户已经被添加。Moodle 会自动这样做。然而,我们目前还不能添加任何更多的学习者到课程中,因为我们还没有向我们的系统中添加任何用户。让我们通过添加一些用户来纠正这种情况,然后再返回到这个屏幕。
探索 Moodle 用户
Moodle 中的每个用户都表示为一个用户账户,其中包含有关个人资料的信息。在以下小节中,我们将在创建第一个用户账户(们)并注册这些用户到课程之前,简要解释用户认证和注册之间的区别。
认证和注册
在我们开始之前,理解认证和注册之间的区别至关重要。用户必须通过认证才能登录到 Moodle,而认证通过登录授予用户访问系统,需要提供用户名和密码。Moodle 支持大量的认证机制,例如 MS-AD、LDAP 和 SAML。目前,让我们使用所谓的手动认证来简化整体用户管理。
注册发生在课程层面。然而,在课程注册之前,用户必须在系统中进行认证。房屋和钥匙的类比可能会有所帮助:你需要一个进入房屋(Moodle)的钥匙(认证),然后你需要为每个房间(课程)单独的钥匙(注册)。
因此,一个典型的流程如下(尽管总是有例外,但这对目前来说已经足够了):
-
创建您的课程(和类别)
-
创建用户账户
-
将用户与课程关联并分配角色
再次,这个顺序很好地展示了在 Moodle 中课程、用户和角色是如何相互交织的。另一种看待认证和注册之间区别的方法是用户如何获得课程的访问权限。请记住,这是一个非常简化的观点,它忽略了支持的功能,如外部认证、访客访问和自助注册:

图 3.5 – 认证和注册
在认证阶段,用户输入他们的凭据(用户名和密码),或者通过单点登录自动输入。如果账户存在于本地(即在 Moodle 内部)且密码有效,则用户将被授予访问权限。如果账户在外部持有(例如,在活动目录中),则检查将在远程进行。
一旦成功,下一个阶段就是注册。如果用户已注册且注册尚未过期,则允许访问课程,可以在其中处理资源和活动。如前所述,此图形仅显示非常基础的内容,但希望现在它能够展示认证和注册之间的区别。您将在第四章,管理和注册课程中遇到这些图形的更详细版本,当我们处理各种注册方法时。
添加用户账户
要手动添加用户账户,请转到网站管理 | 用户 | 添加新用户。与课程一样,我们只会关注必填字段,这些字段应该是自解释的:
-
提供一个唯一的用户名。
-
设置新密码。如果已设置密码策略,则可能适用某些规则。
-
输入用户的姓氏和名字。
-
提供用户的电子邮件地址。它必须是唯一的,尽管有绕过此限制的方法。
-
确保通过在页面底部选择创建用户来保存账户信息:

图 3.6 – 添加 Moodle 用户账户
在这里,通过批量上传创建了几个更多账户,这些将在第五章,管理和认证用户、群体中处理。要查看谁可以访问您的 Moodle 系统,请从网站管理菜单中选择用户 | 浏览用户列表,您将看到所有用户:

图 3.7 – Moodle 用户账户
现在我们系统中有一些用户了,让我们回到我们之前创建的课程,并手动注册新的参与者。
用户注册
要实现这一点,请转到网站菜单中的我的课程。为什么课程会出现在我的课程列表中?记住,当我们之前创建课程时,Moodle 自动将我们的账户添加到了课程中。点击一个课程,再次选择参与者标签页,然后点击注册用户按钮以添加更多用户。将出现一个弹出窗口,您可以通过搜索字段选择一个或多个用户:

图 3.8 – 注册用户
您可能已经注意到在所选用户账户列表下方有一个分配角色下拉菜单。这就是您选择所选用户(们)将被授予的角色的地方,这引出了我们三角形的第三个顶点:角色。
探索 Moodle 角色
角色定义了用户可以在您的 Moodle 系统中看到和执行什么操作。Moodle 附带一些预定义的角色 – 我们已经看到了学生和教师 – 但它还允许我们创建自己的角色 – 例如,监护人或外部评估员。
将角色置于上下文中
每个角色都有一个特定的范围(称为其上下文),由一组权限(表示为能力)定义。例如,教师可以批改作业,而学生则不能。或者,学生可以提交作业,而教师则不能。
重要提示
角色是在上下文中分配给用户的。
好的,那么什么是上下文呢?上下文是在 Moodle 中分配角色给用户的一个隔离区域。用户可以在不同的上下文中被分配不同的角色。上下文可以是课程、类别、活动模块、另一个用户、一个块、主页或 Moodle 本身。例如,你被分配了整个系统的管理员角色,但除此之外,你可能在负责的任何课程中都被分配了教师角色;或者一个学习者在一个课程中被分配了学生角色,但在论坛中可能被授予了教师角色以充当(临时的)版主。
定义角色
为了让你了解角色是如何定义的,让我们转到网站管理 | 用户 | 权限 | 定义角色。点击教师角色,经过一些基本设置后,你会看到一个(非常)长的能力列表:

图 3.9 – 角色、权限和能力
我们将在第六章中更详细地处理所有这些内容,管理权限、角色和能力,所以没有必要恐慌!
目前,我们只想坚持使用本章中使用的示例。既然我们已经知道了角色的概念,我们可以稍微修改一下我们之前所说的内容。与其说“我们已经将用户aileen.bittner注册为ALGDS1课程的学员”,我们可以说“我们在ALGDS1课程中为用户aileen.bittner分配了学员角色。”
在授予和拒绝用户权限时,角色至关重要。然而,当你开始使用 Moodle 时,尽量坚持使用预配置的角色,因为它们在大多数设置中已被证明是足够的。如果需要,你可以在稍后阶段调整角色。
这完成了关于权限的部分,完成了课程、用户和角色的三角形。掌握了这些知识,你现在可以更详细地了解三个核心概念。
摘要
本章简要介绍了 Moodle 课程、用户和角色的概念。我们还看到了它们在 Moodle 中的核心地位以及它们是如何内在交织在一起的。任何一个概念都不能没有其他两个而单独存在,这是你应该记住的。
只为了回顾,本章的三个关键要点如下:
-
课程包括活动和资源,这是学生学习的场所。课程按照层级组织成类别。
-
用户通过账户来表示;通过身份验证获得系统访问权限,通过注册获得课程访问权限。
-
角色在特定上下文中(如课程)为某些用户授予某些功能的权限。
如果你没有完全理解这三个领域的任何一个,不要担心。目的是为你提供一个三个核心组件的高级概述,并简要介绍基础知识。
每个概念都有专门的章节,希望这能澄清任何悬而未决的问题,并更深入地探讨它们。在下一章中,我们将讨论课程及其管理。
第四章:管理课程和注册
Moodle 将学习资源和活动存储在课程中,这是本章的主题,已被分为两个主要部分:课程管理和课程注册。
在本章的第一部分,您将了解以下关于课程和课程类别管理的方面:
-
将课程组织到类别和子类别中
-
创建和管理课程
-
添加自定义课程字段
-
处理课程请求
-
批量管理课程
在本章的第二部分,我们将介绍不同的用户注册课程的方法。将要介绍的注册机制包括以下内容:
-
内部注册(手动、自助和访客)
-
群体注册和同步
-
数据库驱动的注册(LDAP、外部数据库、平面文件和 IMS 企业文件)
-
元课程
-
以支付为驱动的注册(支付账户和网关,如 PayPal)
以下图表展示了所提及的主题(课程、类别和注册方法)之间的高层次概览:

图 4.1 – 课程、类别和注册 – 高层次概览
到本章结束时,您将了解关于课程和类别管理的所有内容。此外,您将能够为您的组织中的 Moodle 系统选择和配置正确的注册方法(们)。
让我们从一般课程管理,特别是课程类别管理开始吧。
将课程组织到类别中
Moodle 管理员的职责是管理类别和课程。本节提供了课程类别的概述,并在介绍类别管理的所有方面之前,先介绍一个运行示例:创建、排列和删除。
提供课程类别的概述
在上一章中,我们简要介绍了类别的概念,它们作为课程的容器。它们可以有子类别,子类别还可以进一步有子子类别,依此类推。
有不同的方式来组织课程和类别层次结构 – 例如,按部门、学科领域或学期。以下图表显示了代表同一组织的两个不同的类别层次结构:

图 4.2 – 示例类别层次结构
如您所见,每个层次结构都代表相同的信息,但以不同的形式。组织您的类别和课程没有对错之分。结构取决于以下参数:
-
您组织的规模
-
您提供的课程数量
-
您运行的课程类型
-
课程开始的频率(每学期一次、每年一次、滚动开始/结束等)
非常建议第一次就正确设置结构,因为更改它既耗时又可能让用户感到困惑。此外,尽量提前规划,考虑结构在未来是否适用——例如,从一年级到另一学年的变化(也请参阅 第十六章,避免失眠之夜——Moodle 备份和恢复,其中我们探讨了年末程序)。
如前所述,不同的组织采用不同的分类方法。以下是一些分类级别的示例:
-
校园 | 系/学校 | 年份 | 科目
-
入学年份 | 主题 | 科目
-
客户 | 科目 | 熟练程度
-
培训师 | 模块
-
课程库 | 主题
有时,深层次的分类可能会让人望而却步,因为它们的管理很繁琐。然而,请记住,只有作为管理员的你才会看到整个分类结构。学生和教师通常只会看到他们注册的课程或分配给他们的课程,除非他们浏览完整的课程索引。
重要提示
为课程和分类制定合适的命名约定非常推荐——它简化了维护并减少了不必要的复杂性。
如果你需要完全分离组织部门,例如,客户或企业中的独立业务实体,课程分类通常不是一个合适的工具。相反,你可能想考虑 Moodle Workplace,它支持多租户,包括具有自己外观、感觉、结构、用户和学习空间的完全隔离实体(有关详细信息,请参阅 第二十章,支持多租户)。有关 Moodle Workplace 的更多信息,请访问 moodle.com/solutions/workplace 或 Packt Publishing 的标题为 使用 Moodle Workplace 进行企业学习 的书籍。
现在我们已经展示了分类层次结构的灵活性和多功能性,创建和管理你的课程分类是下一步。
管理课程分类
一旦你规划了分类层次结构,就是时候在 Moodle 中表示组织结构了。分类在 网站管理 | 课程 | 管理课程和分类 中进行管理,如下面的截图所示:

图 4.3 – 课程分类
初始时,Moodle 包含一个名为 类别 1 的单个分类。前面的截图显示,默认分类已被重命名为 计算机,并为第一到三年级创建了三个子分类。
除了屏幕上的课程类别部分外,还有多达两个更多部分:一个显示所选类别的课程列表,另一个在选中课程后显示课程详情。这种排列在以下图中表示:

图 4.4 – 管理课程和类别
在非常窄的屏幕(平板电脑或智能手机)上,这三个部分将并排显示。您可以通过查看下拉菜单在三个视图之间切换,并显示课程类别和课程(默认),仅显示课程类别,或仅显示课程:

图 4.5 – 管理课程和类别
现在您已经熟悉了类别管理界面,让我们将第一个课程类别添加到您的 Moodle 网站中。
添加课程类别
点击创建新类别按钮或直接转到网站管理 | 课程 | 添加类别,在类别名称字段中输入新名称以添加新类别。父类别下拉菜单指示课程在层次结构中的位置。我们将将其设置为顶级,稍后回来。提供可选的类别 ID 号和描述信息是良好的实践;前者用于自动化某些任务,例如用户上传,而后者例如在课程索引中显示:

图 4.6 – 添加课程类别
接下来是创建课程子类别以创建类别层次结构。
创建课程子类别
如前所述,为了提高课程的组织性,Moodle 允许创建子类别。您可以通过选择一个现有类别,然后从选项中的下拉菜单中选择创建新子类别,或者添加一个新类别(如前一张截图所示),并使用课程类别页面上的下拉菜单将其移动到父类别中,来创建一个子类别。例如,在计算机类别下创建计算机一年级、计算机二年级和计算机三年级子类别,然后使用下拉菜单将它们移动到计算机类别下。或者,您可以在创建子类别时选择正确的父类别。
到目前为止,我们已经创建了类别和子类别。现在,让我们看看如何重新排列类别,以防您需要修改您的层次结构。
组织课程和类别
类别的逻辑排列有三个主要目的:
-
类别层次结构或类别顺序在 Moodle 的多个页面上显示 – 例如,当您需要指定课程需要恢复到的类别时。
-
可以授予类别及其所有子类别的访问权限——例如,数学系的所有用户都有访问数学类别的权限。
-
更容易维护类别结构。这仅适用于网站管理员和类别管理员。
有两种操作来(重新)组织类别:排序和移动。
让我们从移动类别开始。改变类别位置的最简单方法是使用标准上下箭头。一种更灵活的方法是选择一个或多个类别,然后从移动选定类别到下拉菜单中选择一个新位置,在按下移动按钮之前。当您移动一个父类别时,所有子类别都会随之移动:

图 4.7 – 排序和移动类别及课程
您有多种排序类别的选项。从排序菜单中,您可以选择按所有类别、选定类别或当前类别(代表当前类别)排序。类别可以按其名称或ID 号升序或降序排序,也可以不排序(即,您可以将它们放回创建时的原始顺序)。一旦您选择了选项,请按排序按钮。
或者,您可以通过为每个父类别选择下拉菜单中的排序选项来加速此过程。从选项菜单中,可以触发几个操作,如下表所示:

图 4.8 – 类别选项
您还可以使用眼睛图标(例如moodle/course:viewhiddencourses权限)隐藏类别。
一旦您选择一个类别,它就会在课程区域显示所有课程,具体位置取决于您的设备和屏幕大小,可能是位于类别区域的右侧或下方。
虽然您可以使用上下箭头重新组织课程,但您可以使用左侧的横杠并将每个课程拖到其新位置——这是一个非常实用的功能。课程可以按其全名、简称、ID 号和创建时间信息升序或降序排序,您还可以选择修改每页显示的课程数量。隐藏和移动选定课程的方式与类别相同:

图 4.9 – 移动和排序课程
要跨类别排序课程,您必须从课程类别部分的排序菜单中选择所有类别选项。排序选项与之前截图中的上下文菜单中的选项相同。
现在我们已经处理了创建、修改和重新排列课程类别,只剩下一个操作:删除。
删除课程类别
当使用下拉菜单中的相应选项删除课程类别时,您必须决定如果存在课程和子类别,如何处理它们:
-
将内容移动到另一个类别:您需要从移动到选项中选择一个。
-
删除所有 – 无法撤销:此步骤无法撤销!

图 4.10 – 删除课程类别
这就结束了关于管理课程类别的部分。下一步是从类别级别向下移动到课程,以及如何创建它们,我们将在下一节中处理。
创建课程
在 Moodle 中,课程是基础。学习者和管理员大部分时间都在课程中度过,因为教学、学习和协作都发生在这里。
重要提示
我们之前已经提到过,但鉴于它对管理 Moodle 至关重要,所以我们再次强调:Moodle 是一个以课程为中心的系统!
在我们开始创建第一个课程之前,让我们简要地看看一个典型的课程创建工作流程。
课程创建工作流程
不同的组织类型提供不同类型的课程。学校中的课程通常与课程大纲相关联,而商业在线提供商提供的课程则由目录驱动或根据需要提供。然而,大多数课程创建工作流程中都有几个共同步骤,如下面的图表所示,其中顶部行显示要执行的任务,底部行显示通常负责的角色:

图 4.11 – 典型的课程创建工作流程
步骤如下:
-
课程请求:有人请求一个新的课程,这通常由课程大纲驱动,或者可以是由教师提出的临时需求。
-
创建课程:课程框架可以是手动或自动创建的;这两种选项将在介绍完此课程创建工作流程后处理。
-
通知教师:让请求者知道课程已被添加。同样,这可以是手动或自动完成的。
-
调整设置:负责课程的新的课程所有者将添加任何缺失的信息——例如,课程描述。
-
填充课程:课程请求者被交给一个空课程或基于课程模板的框架。教师负责用学习内容、活动和相互依赖性填充课程。
-
注册用户:有各种选项可以将用户添加到课程中。这可以是管理员驱动的自动化过程,由教师手动完成,或者根据您的设置,由学习者自己完成。我们已经在本章的第二部分专门讨论了课程注册,所以现在请耐心等待。
-
开始课程:在某个阶段,课程将被释放到野外,要么是从特定的开始日期(例如,学期的开始)或更灵活的动态设置(例如,自定步调的在线课程)。
这个过程并不是一成不变的,可能在您的组织中看起来不同。可能已经添加了额外的步骤,或者特定任务的顺序可能不同,例如在注册时。然而,概述的步骤通常存在于大多数课程创建工作流程中。好的,足够的过程和程序;让我们将第一个课程添加到您的 Moodle 系统中。
创建新课程
一旦按下创建新课程按钮,Moodle 将您引导到设置页面,在此页面必须输入课程详细信息。当我们创建第一个课程时,我们已经在这个屏幕上遇到了第三章,探索课程、用户和角色。
以下设置在常规和描述部分可用:

图 4.12 – 课程设置
默认情况下,使用过滤器框的moodle/course:change(见第六章,管理权限、角色和能力)将更详细地处理这个问题。
课程格式
在课程设置中的下一节允许您选择课程格式选项。课程格式决定了课程内容将以何种方式呈现给学习者。Moodle 随带提供四种格式,但可以安装更多(见第八章,理解 Moodle 插件)中的安装第三方插件部分)。一旦选择了课程格式,屏幕将刷新以加载相应的课程格式设置:
-
单一活动格式:这仅显示课程中的所选活动 – 例如,SCORM 包、作业、论坛、测验等
-
社交格式:这是一个主要(社交)论坛,列在主课程页面上 – 例如,公告板
-
主题格式:这与周格式类似,但每个周被称为一个主题,没有时间限制
-
周格式:在这个格式中,课程按周组织,有开始和结束日期
您可以通过访问网站管理 | 课程 | 课程默认设置来指定新课程的默认课程格式。
课程日期
虽然大多数课程字段几乎是自我解释的,但日期相关设置可能需要更多解释,尤其是在与刚刚提到的周格式选项结合使用时:

图 4.13 – 课程日期设置
有点令人惊讶的是,Moodle 课程日期不允许或限制课程访问;相反,课程开始日期和课程结束日期会影响课程日志的显示、在周格式下运行时每个主题的标题以及用户课程的状态(进行中、未来或过去)。
默认情况下,课程日期是绝对的;每个用户的开始和结束日期相同。Moodle 还支持相对课程日期,其中每个用户都给定一个单独的开始和结束日期:相对开始日期等于用户的注册日期,除非注册发生在课程开始之前,在这种情况下,个人开始日期是已手动指定的那个,即课程开始日期。
重要提示
相对日期模式一旦创建课程后就不能更改。
以下表格总结了课程中讨论的与日期相关的设置:

图 4.14 – 课程日期设置
个人课程状态的计算如下,考虑到我们讨论的日期和模式:
-
开始日期 ≤ 今天 [≤结束日期] -
今天 >结束日期 -
今天 <开始日期
从课程节数计算结束日期选项仅在您以周格式运行课程时出现。如果启用,课程结束日期将自动根据课程开始日期(相对或绝对)和节数或周数计算。如果添加或删除课程节或周,课程结束日期将自动调整。如果勾选此复选框,则无法手动设置课程结束日期。
注意,在撰写本文时,相对日期模式是一个实验性设置,因为它尚未在所有活动(例如测验)或功能(例如限制访问)中实现。它必须通过站点管理 | 开发 | 实验 | 实验设置中的启用课程相对日期设置来启用。
其他课程字段
外观、文件和上传、完成跟踪和分组部分剩余的选项如下:

图 4.15 – 课程设置
一旦创建课程,您可以将用户分配到课程中的各种角色(例如注册学生和分配教师);我们已在第三章“探索课程、用户和角色”中简要介绍了这一点,并在第六章“管理权限、角色和能力”的整个角色管理部分中进行了专门介绍,因此现在将忽略角色重命名部分。同样,可选的标签部分在第九章“配置教育功能”中进行处理。
在内部,每个课程都有一个 ID。如前所述,课程始终属于一个单一类别,不能属于多个类别或没有类别。然而,主页(课程 ID = 1)是这一规则的例外。在内部,主页被视为一个既不属于任何类别也不能被删除的课程。
在创建新课程时,你可以为大多数参数指定课程默认设置;你可以在网站管理 | 课程 | 课程默认设置中找到这些设置。字段和值与前面截图中所描述的相同。
你迄今为止遇到的所有课程设置都是核心 Moodle 的一部分。自定义课程字段可以添加到下一节中涵盖的选项列表中。
自定义课程字段
Moodle 中的课程字段组织到课程类别中,例如常规、课程格式或外观。可以创建额外的类别,然后可以将用户定义的字段放置在这些新类别中,教师可以配置这些类别。你可以通过导航到网站管理 | 课程 | 课程 自定义字段来找到这个功能:

图 4.16 – 自定义课程字段
在我们的演示系统中,我们已经创建了一个名为课程大纲的类别,包含四个课程字段:理论学习小时数、课程类型、链接到教学大纲和课程更新。要创建一个新类别,点击添加新类别按钮,并使用标准编辑图标重命名默认名称(其他字段)。一旦创建了一个类别,就可以通过添加新自定义字段下拉菜单添加五种类型的配置文件字段:
-
复选框:值是“真”或“假”
-
日期和时间:包含日期和一个可选的时间字段
-
下拉菜单:从预定义列表中选择单个值
-
短文本:一行文本或一个数字
-
文本区域:多行格式化文本
在网站管理 | 插件 | 自定义字段 | 管理自定义字段类型中,你可以隐藏或卸载自定义字段类型。后者仅推荐用于已安装的字段类型;对于这些类型,你也可能找到不存在于五种描述的核心类型中的设置。
一旦你选择了字段类型,你将被带到该字段的设置屏幕,其中包含三个部分:
-
常规设置适用于所有自定义字段
-
字段设置包含仅适用于所选字段类型的参数
-
常见课程自定义字段设置处理权限和可见性
让我们更详细地看看这三个部分。
通用部分包含以下字段:名称字段是在课程设置中显示的标签,短名称字段是唯一的字段标识符。可以提供一个可选的描述字段,该字段在课程设置中的字段下方显示。如果字段是必填的,则必须将必填选项设置为是。如果输入的值需要唯一,则必须相应地更改唯一数据字段:

图 4.17 – 自定义课程字段(通用和常见)
除了通用字段设置外,还需要为每个配置文件字段类型提供特定设置:
-
复选框:此类型只有一个设置。它指定复选框在新用户配置文件中是否默认选中。
-
日期和时间:可以启用并指定最小值(开始日期,默认为今天)和最大值(结束日期,默认也为今天)设置。可以通过勾选包含 时间选项来包含一个可选的时间字段。
-
下拉菜单:对于此类型,必须提供一个菜单选项(每行一个)列表和一个可选的默认值。列表由每行一个项目组成。如果您希望允许空值,请留出第一个条目为空。在下面的屏幕截图中,已输入三个选项(课程大纲、课外和无),其中课程大纲是默认值:

图 4.18 – 下拉设置中的自定义课程字段
$$代表将被输入文本替换的参数。在下面的屏幕截图中,我们已指定yourorganization/syllabus/$$。转换后的链接将在可用课程列表或所有课程中显示。链接目标指定一旦选择此链接将打开的位置:

图 4.19 – 短文本字段设置中的自定义课程字段
- 文本区域:此类型允许用户在自由格式文本框中定义一个可选的默认值。
在通用课程自定义字段设置中只有两个设置。字段可以被锁定;这意味着教师被阻止修改它。当您有一个包含如内部课程代码等数据的中枢课程管理系统时,此选项非常有用,没有人应该更改这些数据。锁定通常与以下三个可见 到选项之一结合使用:
-
所有人(默认):此选项用于教师和学生可以查看的课程信息,以及可能位于课程之外的用户
-
教师:包含学生不应看到敏感信息的字段,这可以像教师的课程准备资源一样简单
-
无人: 这通常由想要在课程上保存数据的管理员设置,例如上述内部课程代码
一旦添加了所有必需的字段,就可以使用上下箭头更改它们在用户资料中显示的顺序。
在此处已详细描述了自定义课程字段的 管理。相同的机制也适用于其他自定义参数,例如用户资料或预约自定义字段(仅限 Moodle Workplace)。
到目前为止,我们已手动创建课程,这是一个可能耗时且易出错的过程。为了解决这些缺点,您有两个选项 – 课程请求和批量上传 – 我们将在接下来的两个子节中介绍。让我们首先通过课程请求部分委托给教师这项任务。
课程请求 – 允许教师请求新课程
只有管理员或课程创建者(或任何具有课程创建权限的其他角色)才有权创建新课程。Moodle 提供了一个课程请求功能,以简化请求课程的程序,尤其是在大型组织中。此功能必须通过访问站点管理 | 课程 | 课程请求来启用。
您必须指定课程请求默认类别设置,该设置控制请求创建的课程将被放置的位置。如果您用户熟悉课程类别结构,您还可以禁用防止类别选择。由于课程必须经过批准,您可以指定课程请求****通知接收者:

图 4.20 – 课程请求
一旦启用此功能,每位教师都可以请求新课程(通过我的课程屏幕上的请求课程选项)。请求者必须提供的信息如下:
-
课程 全名
-
课程 简称
-
课程类别(如果在上文已选择)
-
摘要
-
课程请求原因
在站点管理部分出现了一个新的项目,课程 | 待处理请求。选择后,将显示请求的课程列表,你可以通过选择适当的按钮来批准或拒绝:

图 4.21 – 课程批准
当你批准一门课程时,熟悉的课程设置屏幕会出现。此屏幕已包含系统设置中指定的提供的课程值。此外,已请求该课程的用户将被自动注册,并且默认情况下,他们将分配教师角色。如果你拒绝一门课程,必须给出理由,并将此理由通过电子邮件发送给请求者。
课程请求仅部分自动化课程创建过程,因为您仍然需要手动批准或拒绝它们。批量上传课程提供了一种灵活的方式来创建、修改和删除课程,而无需进一步干预。
批量管理课程
到目前为止,本章中所有操作都是手动执行的。然而,在拥有许多课程和类别的组织中,此过程应该自动化。在 站点管理 | 课程 | 上传课程 中,Moodle 为我们提供了一个强大的工具来批量管理课程。这不仅让我们能够创建新课程,还适用于更新和删除课程、导入课程以及从备份和课程模板中恢复课程。
要批量创建课程,您需要创建一个包含以下字段的 CSV 文件(完整列表可在 docs.moodle.org/en/Upload_courses 找到):
customfield_<shortname>– 例如,customfield_duration。
要指定课程必须放置的类别,您有三个选项(按优先级顺序):category(内部 ID)、category_idnumber(ID 号码)和 category_path,其中必须使用空格包围的正斜杠分隔子目录([category]<space>/<space>[subcategory]…)。
以下是一个演示所有三种选项的示例文件:
shortname,fullname,category,category_idnumber,category_path
course1,Course One,4,,
course2,Course Two,,COMP-1,
course3,Course Three,,,Computing / Computing - Year 1
重要提示
类别不能在批量模式下创建;它们必须存在!或者,使用 MOOSH,一个 Moodle Shell,在 第十七章 使用 Moodle 管理员工具 中更详细地解释。
-
注册字段:这些允许您启用和配置注册插件。我们将在本节后面进一步处理注册,以下是一个配置自助注册的示例:
shortname,fullname,category,enrolment_1,enrolment_1_startdate course1,Course One,4,self,06/10/14 course2,Course Two,4,manual,06/10/14 course3,Course Three,4,manual,06/10/14
在撰写本文时,只有手动、自助、访客和班级注册方法由课程上传支持。要监控此缺失子功能的进度,请监控 bug 跟踪数据库中的 MDL-73838。
- 角色重命名:这提供了一种重命名标准角色的方法。我们将在 第五章 管理用户、班级和身份验证 中处理角色。
除了这些三种字段类型之外,还可以指定所谓的课程操作字段以执行除创建课程之外的操作:
-
删除:将“1”用于删除课程。
-
重命名:添加一个新的课程简短名称。
-
.mbz),用作源。这可能导致性能问题(请参阅 附录 配置设置 中的$CFG-> keeptempdirectoriesonbackup)。 -
作为源使用的现有课程的
shortname。 -
重置:将“1”用于重置课程并删除任何用户数据。
一旦文件已上传,如果设置不正确,您将不得不更改 CSV 分隔符 和 编码 文件格式设置。然后,您可以进一步指定 预览行数。然后,可以配置以下导入选项(根据选择的上传模式,某些设置将显示或隐藏):

图 4.22 – 上传课程
屏幕上的对应内容如下:

图 4.23 – 上传课程
在预览模式下,您将再次看到这些导入选项以及课程流程设置、默认课程值,以及如果已添加自定义课程字段,则每个自定义课程类别的默认值。后两者是如果 CSV 文件中没有提供并且选择了支持默认值的更新模式时使用的值。课程流程支持两种类型的模板,这需要一些解释:
-
shortname列,您可以使用模板语法来设置名称,根据idnumber (%i)或fullname (%f)。例如,给定的Packt %i将生成Packt_1、Packt_2和Packt_3,使用我们之前使用的输入文件。 -
.mbz。假设选择了任一选项并且您已选择更新现有课程。在这种情况下,您应选择允许重置和上传后重置课程选项,以删除在源课程中添加的任何用户数据:

图 4.24 – 上传课程
在选择预览按钮后,屏幕顶部的预览列表将根据所选值更新,这是在上传之前通过试错法测试您的 CSV 文件的一个极好方法。一旦上传了课程,您将看到结果摘要:

图 4.25 – 上传课程
此外,还有一个 CLI 工具可以从命令行执行课程上传。您可以在 admin/tool/uploadcourse/cli/uploadcourse.php 中找到它。通过调用 help 模式,您将看到所有支持的参数:
sudo /usr/bin/php admin/tool/uploadcourse/cli/uploadcourse.php --help
这里是其使用的一个示例:
sudo /usr/bin/php admin/tool/uploadcourse/cli/uploadcourse.php --mode=createall –-updatemode=dataordefaults –-file=./courses.csv -–delimiter=comma
关于 Moodle CLI 的整个部分在第十七章 使用 Moodle 管理工具中。
这完成了本章的第一部分,其中我们处理了课程和类别的管理。第二部分将讨论用户如何通过注册获取课程访问权限。
理解课程注册
在介绍性章节第三章 探索课程、用户和角色中,我们已经提到了注册。现在,我们将更深入地探讨并查看可以设置的不同机制,以授予用户课程访问权限。您可能还记得第三章中提出的基本注册工作流程。让我们看看一个更详细的版本:

图 4.26 – 注册形式
让我们从左上角开始,那里用户尝试访问课程。如果选课已经发生,将授予访问权限。如果用户被暂停,将拒绝访问。如果选课已过期,用户将被取消选课;否则,将授予访问权限。如果用户未被选课,Moodle 将检查是否允许访客或自助选课访问。如果任一情况成立,将检查选课密钥。如果密钥正确或不需要密钥,将进行自助选课,并授予访问权限。作为最后的选项,Moodle 将检查是否接受支付,如果批准,用户将被选入课程。在处理特定的选课机制时,您可能需要回到这个图。
在允许学生使用课程之前,需要给他们提供课程访问权限——或者,用 Moodle 的话说,用户需要在课程上下文中分配一个角色。他们可以通过群体或外部选课设施自动分配角色,通过自助选课,或者通过课程内的参与者标签手动分配。
重要提示
通过选课机制执行课程访问权限的授予。
实际的学生选课不需要管理员权限,这是教师可以执行的任务。管理员的职责是设置网站范围内可用的选课机制。Moodle 支持广泛的选课选项,这些选项将在本章的剩余部分讨论。
您可以通过网站管理 | 插件 | 选课 | 管理选课插件访问课程选课配置页面。每个支持的选课机制都由一个可以单独启用和配置的选课插件表示:

图 4.27 – 选课插件
对于每个插件,都会显示其实例数和选课数。每个插件都可以单独启用或禁用。
重要提示
Moodle 支持多选课;也就是说,可以同时启用多个插件。
插件的排列顺序决定了当用户尝试进入课程时,检查用户选课的顺序。建议将大多数用户使用的插件优先级高于偶尔使用的插件,因为这会提高系统性能。
所有活动插件都必须进行配置;我们将在介绍单个选课机制时处理这些设置。虽然可以卸载插件,但并不推荐这样做。如果以后需要,它们将不得不重新安装,而首选的做法是简单地禁用它们。
重要提示
用户在能够被选入课程之前需要拥有一个用户账户。
每种注册类型都进行了详细说明,除了 MNet 远程注册,它将在第十九章 设置 Moodle 网络和发布为 LTI工具中介绍,我们在第九章 配置教育功能中处理。我们也没有介绍两个遗留解决方案分类注册(由群体同步取代)和PayPal(现在作为支付注册的网关)。您选择的注册机制完全取决于您现有的基础设施 – 即学习者的注册数据存储的位置和格式。
一旦设置好注册表单,就必须在它将要使用的课程内进行配置。从参与者标签页上的下拉菜单中选择注册方法选项,您将看到所有活动(显示)和未活动(隐藏)的注册插件列表。每种注册方法都附带一些设置,我们将在插件本身的部分进行介绍:

图 4.28 – 课程级别的注册方法
在站点级别启用并配置的任何非数据库注册方法都可以通过添加方法下拉菜单添加。一个插件是否自动出现在新课程列表中取决于将实例添加到新课程参数。一些插件,例如自助注册和PayPal,可以在同一课程中添加多次,这在需要支持多个角色时很有帮助。
到目前为止,我们已经介绍了注册插件的一般情况。现在,是时候开始介绍第一种课程注册类型:内部注册。
内部注册
内部注册意味着 Moodle 处理所有注册,不涉及任何其他系统。Moodle 支持三种内部注册类型:
-
手动注册
-
自助注册
-
访客访问
我们将分别用小节来介绍这三种内部注册类型。
手动注册
手动注册是 Moodle 安装时的默认注册机制。全局设置在网站管理 | 插件 | 注册 | 手动注册中进行配置:

图 4.29 – 手动注册选项
一旦设置好插件,您将在课程内的注册方法 | 手动注册 | 设置下看到一个非常相似的屏幕:

图 4.30 – 课程级别的手动注册选项
实际的用户注册发生在参与者中,正如我们在上一章中已经讨论过的。我们还没有讨论的是注册的暂停和过期。您可以通过您已注册课程用户的状态列中的编辑符号单独更改这些设置:

图 4.31 – 注册的暂停和过期
要修改多个用户的注册数据,请在参与者列表中选择他们,并从与选定的用户…下拉菜单的正确部分选择编辑选定用户注册。同样,通过标准的删除图标或批量通过删除选定用户注册选项取消个别用户的注册。
教师可以执行所有这些步骤,但您可能决定将这些任务集中执行以保持一致性,并简化他们的工作流程。如果是这种情况,他们的角色应该被修改,以便只有管理员或专门的用户可以处理注册。
自动注册
自动注册的概念相对简单:用户选择他们想参与的课程。课程可以包含一个密码,称为注册密钥。知道这个密钥的人可以将自己添加到课程中。对于允许无密码访问的课程的旁边会显示一个开放的门图标;否则,将显示一个关闭的门图标。
注册密钥在课程级别设置。教师必须通知学生密钥,并理想情况下将注册期限限制在适当的时间范围内,以避免滥用。
一旦设置了注册密钥,学习者首次尝试访问课程时必须输入它。如果输入正确,将允许访问;否则,将拒绝访问。
重要提示
自动注册需要启用手动注册。
您可以在网站管理 | 插件 | 注册 | 自动注册中找到全站自动注册的设置:

图 4.32 – 自动注册选项
一旦设置了插件,您将能够在课程内的参与者标签页上的注册方法 | 自动注册 | 设置中进行实例化:

图 4.33 – 课程级别的自动注册选项
这些设置与前面表格中描述的全站设置基本相同。每个参数旁边的帮助图标会显示每个设置的更多详细信息。
您可以创建多个自动注册方法的实例,这就是为什么您需要分配一个区分性的自定义实例名称。如果您需要向不同的用户组提供对同一课程的访问权限,这很有用——例如,不同批次的或来自多个客户的学员。
客户端访问
客户端访问可以被视为临时注册。无论是否在系统上认证,用户都将被授予受控(只读)访问课程的权限。未经认证的用户将通过登录屏幕上的以访客身份登录按钮进入。内部,他们将被分配一个临时用户 ID,之后将被丢弃。允许客户端访问的课程旁边会显示访客图标。
客户端访问的全站设置位于网站管理 | 插件 | 注册 | 客户端访问:

图 4.34 – 客户端访问选项
您可以在课程设置中为客户端访问指定密码。如果您希望强制要求,请选择要求客户端访问密码。对于新创建的课程,将生成一个随机密码(在课程设置中取消密码遮罩以查看它)。从课程中移除客户端访问密码是不可能的,但它们可以被修改。
注册实例默认设置与手册和自助注册方法的前两种相同。
您可以在课程内的参与者标签页上的注册方法 | 客户端访问 | 设置中允许或禁止客户端访问。在这里,您还可以指定之前提到的密码:
重要提示
为了使访客访问对未登录的用户有效,请确保在网站管理 | 插件 | 身份验证 | 管理身份验证中将访客登录按钮设置为显示。否则,客户端访问将仅对认证用户有效。
在docs.moodle.org/en/Guest_access上有两个关于客户端访问的 Moodle 学院视频。有关自动登录访客等主题的更多信息也可用。
这就结束了关于内部注册方法的子节。接下来是关于在多个课程中注册相同用户组的有趣注册方法:班级注册和同步。
班级注册和同步
班级是全站或全局组。我们将在第五章,管理用户、班级和身份验证中详细讨论班级,所以现在我们只需假设它们是一组用户的集合。
一旦创建了班级并分配了成员,就可以在课程中注册整个班级或同步班级的成员与课程。以下图表显示了这两种变体:

图 4.35 – 班级注册与班级同步
让我们用一个例子来解释这个图,从注册开始:假设你有一个名为 7c 的班级,有 30 名学生,在一个学校里。这个班级必须在八门不同的课程中注册,其中每门课程代表一个科目。我们只需创建一次班级 7c,然后我们可以逐个将班级成员注册到每门课程中。
或者,我们可以通过八门课程激活班级同步,Moodle 将处理其余部分。如果新学生加入班级,我们只需将他们的账户添加到班级中,注册将自动完成。同样,如果班级成员被移除,学生也将被取消注册。
那么,何时使用一次性注册,何时使用永久同步?如果班级可能保持静态且注册是一次性的,则班级注册就足够了。然而,如果班级可能人员流动较大且课程需要保持同步,则使用同步会更好。请注意,移除班级成员不仅会触发从课程中取消注册,还会删除某些学习进度数据。
班级同步对于组织来说也非常好,例如,在小学中,小组在班级间移动。你只需处理用户群体,这比移动单个用户更节省时间,也更容错。
班级同步插件(网站管理 | 插件 | 注册 | 班级同步)仅包含两个参数——当用户被注册时给予的默认角色值以及当用户从外部注册源被移除时采取的操作:

图 4.36 – 班级同步选项
我们必须创建一个班级并分配一些成员,以便看到班级同步的实际操作。转到网站管理 | 用户 | 账户 | 班级,通过点击添加新班级标签页添加一个班级。给出班级名称(在我们的例子中,7c),然后从上下文下拉菜单中选择所有课程属于班级7c的类别。如果不适用的,选择系统。班级 ID和描述是可选字段;确保可见被勾选。一旦保存,你必须通过选择旁边的分配图标将成员分配到班级中。
一旦成功,我们就可以将班级(即所有班级成员)注册到我们的课程中。在课程内,转到参与者标签页,点击注册用户按钮,并选择班级7c:

图 4.37 – 班级注册
一旦选择注册选定的用户和批次,所有批次成员都将注册到课程中,类似于手动注册。然而,不会进行进一步的同步 - 这实际上与手动注册所有 30 个用户相同,但只需一步。
作为一次性练习的替代方案,我们可以建立一个永久性的安排,通过参与者标签中的熟悉注册方法链接设置注册方法实例,然后从添加****方法下拉菜单中选择批次同步:

图 4.38 – 批次同步
一旦添加,批次的所有用户都将被注册。Moodle 将自动跟踪批次,如果用户被添加到批次中,他们也将注册到课程中;如果用户从批次中移除,他们将取消注册。与自助注册一样,批次同步允许在课程内存在多个实例。
如果你有必须注册多个课程的组,则批次同步是组织用户的一个很好的方法。另一种避免手动注册的方法是数据库驱动注册,我们将在下一节中介绍。
数据库驱动注册
在较大的组织中,将某些与用户相关的信息存储在单独的数据库或目录中是很常见的。如果这些信息包含课程相关信息,应将其用于注册。这样做可以最小化使用手动注册时所需的努力。
重要提示
与内部注册方法不同,数据库驱动注册不能在课程级别进行配置。一旦设置,它们将在整个站点上应用。
有四种注册方法属于数据库驱动注册类别,我们将按以下顺序介绍:LDAP、外部数据库、平面文件和 IMS 企业文件。
LDAP
轻量级目录访问协议 (LDAP) 是一种用于查询和修改目录服务应用程序标准。许多组织用它来存储学习者的详细信息,因此非常适合作为 Moodle 的注册来源。
重要提示
服务器上必须安装 PHP LDAP 扩展,以便注册工作。
如果没有安装,Moodle 将显示错误消息。该模块支持微软的 LDAP 实现,称为活动目录,以及 OpenLDAP,这是一种开源的认证机制实现。对于使用 LDAP 进行注册的网站,也通常使用 LDAP 进行认证,这在第五章中详细讨论,管理用户、批次和认证。
注册方法的原理相当简单但有效。数据源中存储的学生、教师和课程信息映射到 Moodle 的对应部分。当用户登录时更新注册。我们只需要提供映射。
Moodle 在处理 LDAP 注册时做出了一些假设:
-
您的 LDAP 树包含映射到课程的组
-
每个组都有多个成员条目以映射到学生
-
用户有一个有效的ID 号字段
LDAP 设置位于站点管理 | 插件 | 注册 | LDAP 注册。它们已经附有详细说明,因此我们不会重复它们;相反,在适用的情况下,我们将提供更多信息。如果您不确定如何找到一些所需信息,请联系系统管理员。
需要提供七个参数部分:
-
LDAP 服务器设置建立与目录的连接。也支持具有 TLS 加密的 LDAP 服务器。
-
绑定设置指定访问 LDAP 服务器所需凭据的详细信息——即提供的用户名和密码。
-
角色映射指定用户相关信息如何在 LDAP 服务器上存储。角色必须设置,包含上下文(通常与服务器设置相同)和成员属性(用户 ID)。正确设置搜索子上下文至关重要。如果设置为否,则不会搜索子上下文,但搜索可能更快,反之亦然。同时,确保用户类型设置与您使用的服务器类型匹配——例如,MS Active Directory。
-
课程注册设置指定课程和模块信息如何在 LDAP 服务器上存储。它还提供了不同形式的退订选项。
-
自动课程创建是一个可能节省时间的功能。为 LDAP 服务器上指定类别中的每个条目创建一个课程。为了加快流程并确保课程之间的一致性,您应该创建一个具有首选设置的课程,并使用它(其课程 ID)作为所有新创建课程的模板。
-
运行
enrol/ldap/cli/sync.php。 -
嵌套组设置允许您配置在您的 LDAP 服务器内支持组内组:

图 4.39 – LDAP 注册选项
与 LDAP 注册一起工作通常需要一定的试错过程。在将机制应用于生产服务器之前,建议在沙盒中创建多个示例课程和注册。
如果您需要使用不同设置的多个 LDAP 系统,有两种选择:
-
您需要在系统级别复制注册插件并相应地修改源代码。程序员必须执行此任务,因为需要在复制的模块中进行源代码更改。
-
您需要升级到支持多租户身份验证的 Moodle Workplace。有关此强大功能的详细信息,请参阅docs.moodle.org/en/Multi-tenancy_authentication。
外部数据库
许多组织使用一个管理信息系统,无论是专有的还是内部开发的,它包含有关员工和学员以及他们所注册的课程的信息。将此数据用于 Moodle 注册是完全合理的。因为所有信息系统在其核心都使用数据库,我们只需要获取相关数据即可。
坏消息是,有许多数据库系统需要支持,从两个大型的商业玩家 Oracle 和 Microsoft SQL Server,到流行的开源系统 Maria DB 和 Postgres。好消息是存在一个名为ActiveX 数据对象(ADO)的层,它为我们做了所有艰苦的工作。我们只需要与 ADO 层交谈,它的内部将处理其余部分,无论它与哪个数据库交谈。
数据库必须包含有关课程 ID 和用户 ID 的信息。这两个字段将与您在本地课程和用户表中选择的对应字段进行比较。
重要提示
建议您让数据库管理员设置相关数据的只读视图。这样,您的注册机制就可以很好地与数据库本身解耦。
要配置数据库驱动注册,请转到站点管理 | 插件 | 注册 | 外部数据库连接:

图 4.40 – 外部数据库注册选项
数据库连接设置已在屏幕上用良好的说明进行了注释,我们在此不再重复。如果您不确定如何找到一些所需信息,请联系您的数据库管理员。
重要提示
一些数据库,如 Oracle,是区分大小写的;也就是说,必须提供正确的首字母大小写来确保数据库链接正确工作。
您可以通过站点管理 | 插件 | 注册 | 管理注册插件中的相应链接测试您的外部数据库设置。抛出的错误信息将帮助您调试设置,直到建立有效的连接。
平面文件
Moodle 提供了一个配置在站点管理 | 插件 | 注册 | 平面文件(CSV)的平面文件注册机制。该方法将反复(通过 Moodle cron 进程)检查并处理您指定的位置中的特殊格式 CSV 文件。文件的格式如下:

图 4.41 – CSV 注册文件格式
以下是一个示例文件片段:
add, teacher, 5, Psychology1
add, student, 12, Psychology1
del, student, 17, English2
add, student, 29, English, 1207008000, 1227916800
开始和结束时间必须一起提供。建议使用在线转换器生成自纪元以来的数字。
在站点管理 | 插件 | 注册 | 平面文件(CSV)的文本文件设置中,您必须提供服务器上的绝对文件位置。Moodle 必须能够读取文件并在处理完毕后删除它!您可以选择将日志文件发送给管理员,并将通知发送给负责注册和学生的用户。外部取消注册操作指定当用户从源文件中删除时会发生什么。同样,注册过期操作指定一旦用户的注册过期,会发生什么。如果需要,平面文件角色映射部分中的默认角色可以被其他值覆盖:

图 4.42 – CSV 注册选项
IMS 企业文件
IMS 全球学习联盟已经指定了一种 XML 文件格式,用于表示学生和课程信息。Moodle 可以使用符合该格式的任何文件作为其注册源。与平面文件格式一样,Moodle 会定期检查其存在;如果找到,它将处理文件并删除它。您可以在docs.moodle.org/en/IMS_Enterprise中找到其基本结构的详细信息。
该插件还可以在尚未创建时创建用户账户,或者根据请求更改用户详细信息。此外,如果它们在 Moodle 中找不到,还可以创建新课程。
包括角色映射在内的所有其他字段都在屏幕上进行了详细说明,并且可以在站点管理 | 插件 | 注册 | IMS 企业文件中访问。
这部分关于数据库驱动注册的内容到此结束。接下来是所谓的元课程的一种独特注册形式。
元课程 – 在课程间共享注册
元课程是从其他课程中获取注册的课程。它们可以从一个注册中填充多个课程,或者从一个注册中填充一个课程。当这种情况有用时,主要有两种场景:
-
多门课程想要共享信息或资源(元课程)
-
一门课程是资格认证的一部分,学生必须注册一定数量的课程;每门课程都设置为元课程
下面的图中展示了这两种场景:

图 4.43 – 元课程场景
前往网站管理 | 插件 | 注册 | 课程元链接。列表包含任何未同步的角色;也就是说,在子课程中具有这些角色的用户也将被授予访问其父课程的权利。同步所有注册用户意味着如果用户在任何父课程中没有角色,他们也将被注册。外部取消注册操作指定当用户从外部注册源(例如 CSV 文件或 LDAP)中删除时会发生什么。排序课程列表参数确定课程是否按网站管理 | 课程 | 管理课程和分类中指定的顺序排序,或者按选定的排序标准之一排序:

图 4.44 – 课程元链接注册选项
教师有权在课程的“用户”部分下“注册方法”中的课程元链接下设置元课程并管理其依赖项。虽然管理元课程是教师的工作,但经验表明,管理员经常被要求代表他人设置这些课程。
重要提示
子课程将其注册信息提供给父课程。从父课程创建到子课程的链接。
为了设置如图所示的第一种场景,其中元课程包含共享资源,您必须首先创建所有四门课程,并在计算机科学资源课程内(通过参与者标签上的注册方法)创建一个新的课程元链接实例。此实例必须链接到所有子课程——在我们的案例中,是提到的三个编程课程:

图 4.45 – 配置子课程
为了模拟第二种场景,您需要创建所有 13 门课程(一门用于软件工程硕士和一门用于每个单元的课程),并在 12 个父课程中添加一个课程元链接方法到软件工程硕士课程。
元课程是同步跨课程用户的好方法。在某些情况下,您可以使用群体和群体同步达到相同的效果。如果情况如此,通常首选与群体一起工作,因为它们更容易管理,尤其是在大型网站上。
元课程的另一种选择是 Moodle Workplace 中的项目,其中课程可以通过集合灵活捆绑,包括对课程分层序列的支持。您可以在 docs.moodle.org/en/Programs 找到关于项目的良好介绍。
到目前为止,所有注册方法都是由组织参数驱动的,例如课程访问、密码或时间。我们想要花时间讨论的最后一种注册类型是支付。
支付注册
Moodle 附带一个基本的支付机制,允许您通过不同的支付系统向用户收费。Moodle 支付背后的概念如下:
-
支付网关代表一个支付服务 – 例如,PayPal、Stripe 或支付宝
-
支付账户支持一个或多个支付系统
-
付费课程注册与支付账户相关联
下表可视化了提到的三种机制:

图 4.46 – Moodle 支付
要创建您的第一个支付账户,请转到网站管理 | 常规 | 支付 | 支付账户,然后点击创建支付账户按钮。您必须提供一个将在稍后设置注册实例时使用的账户名称。可选地,您还可以提供一个ID 号,当账户与外部系统匹配时才需要。
如果您的组织需要为不同的课程使用不同的支付网关,您可以创建多个支付账户。在我们的系统中,我们还创建了一个测试账户,该账户已被禁用:

图 4.47 – 支付账户
Moodle 附带一个支付网关,即 PayPal。可以通过moodle.org/plugins/?q=type:paygw安装额外的网关。我们将在第八章 理解 Moodle 插件 中处理插件的安装。
对于每个支付账户,都会显示所有支付网关,包括勾选或叉号,以指示是否已配置网关。那么,您如何配置支付网关呢?您只需点击网关的名称,这将带您进入特定支付账户的配置。在这里,我们只将涵盖随 Moodle 一起提供的 PayPal 网关:

图 4.48 – PayPal 网关配置
品牌名称是可选的,并覆盖 PayPal 网站上的企业名称。PayPal 通过developer.paypal.com/api/rest提供客户端 ID和密钥信息。您登录后将会看到这两个值。请记住,您需要一个 PayPal 企业账户才能上线。最后,您可以将环境从实时更改为沙盒以进行测试。
在可以使用支付插件进行注册之前,您必须在网站管理 | 插件 | 注册 | 管理注册插件中启用它们。技术上,作为管理员,您只需完成这些操作来设置支付账户和网关。
为了完整性,以下是创建课程内支付实例的最终步骤(如往常一样,通过参与者中的注册方法选项支付注册在参与者中进行):

图 4.49 – 支付注册配置
唯一偏离其他注册方法标准字段的是以下字段:
-
支付账户:选择您已设置的其中一个支付账户。
-
注册费:您对课程收取的金额。
-
货币:您的费用货币。您必须为每种货币创建单独的注册方法实例,以便向使用不同货币的用户收费。
可以为支付注册方法创建多个实例。如果您希望在不同货币、角色或如果您有付费和非付费学习者的混合,这种设置很有用。
一旦用户想要注册付费课程,以下对话框将出现(我们选择的支付账户还包括第三方支付网关 Stripe):

图 4.50 – 用户支付选择
付款成功后,用户将被注册到课程中。你可能已经注意到底部显示的 2% 附加费。您可以在网站管理 | 插件 | 支付网关 | 管理支付网关 | 设置中指定每个支付网关的附加费。在此屏幕上,您还可以看到每个支付网关支持的货币。
通过支付注册提供了一种灵活的方式,可以提供收费和非收费课程的组合。如果您需要将更先进的购物车解决方案集成到 Moodle 中,您可能需要考虑像 Course Merchant 或 Magento 这样的商业服务。这些系统支持更复杂的流程,例如批量购买、税务发票支付和价格区间。
这就结束了关于注册的全面章节,其中我们介绍了注册原则并涵盖了注册插件。到现在为止,你应该能够设置和配置适合您组织和个人 Moodle 系统的注册机制组合。
摘要
呼!这真是太多了。课程复杂性、管理以及各种注册方面展示了典型的 Moodle 难题:功能非常强大且灵活,但这种多功能性以复杂性为代价。Moodle 在掌握这种平衡术方面做得很好,但无论如何,通常需要克服一个陡峭的学习曲线。
在本章中,你了解了关于课程和类别的所有内容。正如我们所发现的,课程对 Moodle 来说是基本的,因为它们包含了教师准备并由学生使用的所有学习活动和内容。甚至 Moodle 的主页也是一个课程,但我们将在稍后当我们定制 LMS 的外观和感觉时再处理这个问题。
虽然可以将许多与课程相关的任务委托给非管理员 – 我们将在第六章,管理权限、角色和能力中处理这一点 – 但作为管理员,你通常需要设置整体课程和类别结构。此外,还有许多与课程和类别相关的设置,我们在此节中故意没有涉及,但将在整本书中涵盖。例如,在站点管理 | 外观 | 导航中的各种选项,这些选项决定了导航栏中显示的内容,以及站点管理 | 外观 | 课程,其中包含有关课程目录结构的信息。这两个主题都将在第七章,增强 Moodle 的外观和感觉中进行讨论。
与课程紧密相关的是用户的注册;理解注册(我们已在本章中介绍)与身份验证(我们将在下一章详细讨论,该章涉及用户管理)之间的区别是很重要的。
第五章:管理用户、群体和身份验证
本章将教你如何在 Moodle 系统中管理用户。我们首先将查看每个用户存储的信息以及我们如何扩展他们的个人资料。然后,在处理群体之前,我们将执行几个标准用户操作。最后,我们将处理一系列用户身份验证机制。我们将涵盖以下主题:
-
理解用户个人资料
-
执行标准用户操作(手动和批量)
-
手动创建用户账户(包括批量上传)
-
管理群体(包括批量上传)
-
配置用户身份验证(内部、外部、服务提供商和系统)
以下图表显示了上述主题(用户、群体和身份验证)的高级概述以及它们是如何相互关联的:

图 5.1 – 用户、课程和身份验证 – 高级概述
到本章结束时,你将能够管理用户账户和用户身份验证的所有方面。这需要吸收很多信息,所以我们最好早点开始!
理解用户个人资料
除了访客外,每个用户都有一个包含其信息的个人资料。我们首先将处理每个用户存储的信息以及它在 Moodle 中的组织方式。
你可以通过在屏幕顶部的姓名旁边的下拉菜单中选择个人资料项来查看自己的个人资料。点击用户详情部分的编辑个人资料链接来更改个人资料详情。要修改其他用户的个人资料,请导航到网站管理 | 用户 | 账户 | 浏览用户列表,然后点击他们名字旁边的编辑图标。
个人资料字段
Moodle 用户个人资料被分为预定义的类别,这些类别不能通过 Moodle 用户界面进行更改:
-
通用:标准用户字段
-
用户图片:用户的图片
-
附加姓名:音译名、中间名和别名
-
兴趣:用于网络活动的标签
-
可选:额外用户信息
除了这些静态的个人资料字段类别之外,Moodle 还允许我们创建用户自定义的个人资料类别和字段。在处理自定义个人资料字段之前,我们将介绍上述类别分组预定义的字段。
用户个人资料字段 – 通用
以下截图显示了通用类别的个人资料字段:

图 5.2 – 用户个人资料字段 – 通用
大多数这些项目都是不言自明的,但有一些关于每个项目的细节你需要了解。以下是每个个人资料元素的简要描述,以及如何有效地使用它们的提示:
- 用户名:必须提供一个唯一的用户名。默认情况下,仅允许使用字母数字小写字符、下划线(_)、连字符(-)、点(.)或at符号(@)。假设您还希望在用户名中使用其他字符,例如重音符号(¨),在这种情况下,您必须通过访问站点管理 | 安全 | 站点安全设置并开启允许用户名中使用扩展字符来启用这些字符。重要的是要记住,您需要有管理员权限来更改用户名。
如果您希望使用电子邮件地址作为用户名,请考虑允许通过电子邮件登录选项(在站点管理 | 插件 | 认证 | 管理认证)。这样,用户有两个登录选择,即他们的用户名和他们的电子邮件地址。
重要提示
如果您的用户还没有可以作为 Moodle 用户名(可重复)使用的唯一标识符,例如电子邮件地址或员工 ID,强烈建议为用户名制定一个一致的命名方案,例如,对于较小的机构使用firstname.lastname,对于较大的组织使用startyear.firstname.lastname.index。
- 主管理员账户的
auth方法。我们将在本章的后半部分详细探讨认证方法。
重要提示
错误的认证方法会阻止用户登录,甚至可能完全删除他们的账户!
- 挂起账户:选择此选项以阻止用户登录。这作为一个纪律措施或在更长时间缺席的情况下(例如,休假学期)非常有用。挂起没有到期日期,因此您必须手动将其更改回来。
重要提示
账户挂起与注册挂起不同。前者影响用户,后者影响单个课程的注册。
- 新密码:在创建手动账户时,出于安全考虑必须提供一个密码。如果用户在首次登录时需要更改提供的密码,必须选择强制密码更改选项。您可以揭示(显示)自己的密码,但不能揭示其他用户的密码。然而,管理员可以覆盖用户的现有密码。
如果密码策略已启用(在站点管理 | 安全 | 站点安全设置),密码必须遵守此策略。有关密码策略的更多详细信息,请参阅第十三章,确保 Moodle 安全。
-
名字和姓氏:这些是用户的必填字段,对于带重音符号的字符(ä、â、à、á、…)完全支持。
-
电子邮件地址:这是一个必填字段,并且应该是唯一的。请确保地址正确,因为 Moodle 会定期使用它,例如,通知忘记用户名或密码的用户。
一些组织仍然没有使用电子邮件地址。由于这是一个必填字段,在这种情况下有两种典型的解决方案。
第一种选择是开发独特的虚拟电子邮件地址方案或仅用于识别目的的电子邮件地址。虽然从技术上解决了问题,但会显著限制用户体验,因为用户之间的通信或 Moodle 生成的通知无法发送。
第二种选择是激活重复电子邮件地址(在网站管理 | 插件 | 认证 | 管理认证中启用允许具有相同电子邮件的帐户),并为具有电子邮件地址的用户负责学习小组,例如,一个教师负责一个班级或一个主管负责工人。虽然从隐私角度来看这种方法并不理想——特定用户的消息可能会被多个人阅读——但至少有人知道发生了什么,然后可以将其传达给预期的收件人。
-
电子邮件显示:可以选择谁可以看到用户的电子邮件地址。不言自明的选项有从非特权用户隐藏我的电子邮件地址、允许每个人查看我的电子邮件地址和仅允许其他参与者查看我的电子邮件地址(默认)。管理员和教师(具有编辑权限)将始终看到电子邮件地址,即使它们被隐藏。
-
MoodleNet 个人资料:链接到用户的 MoodleNet 个人资料,它必须是一个符合 WebFinger URI 的链接。我们将在第十九章 设置 Moodle 网络中处理 MoodleNet。
-
城市/镇和选择一个国家:这些用于通过用户的地理位置进一步识别用户。
-
时区:此功能用于将系统中的时间相关消息(例如作业截止日期)从本地时间(通常是服务器时间)转换为用户所选时区的正确时间。由于您的用户可能分布在全球多个时区,因此这是必要的。默认的城市、国家和时区可以通过导航到网站管理 | 位置 | 位置设置来指定。
-
描述:此选项提供有关用户的额外信息。作为管理员,您可以保留该字段为空。
用户个人资料中可能会出现其他字段,例如首选主题或电子邮件字符集,但这需要更改其他位置的设置。当处理相关主题时,我们将提及这些内容。
用户个人资料字段 – 用户图片
第二类被称为用户图片,正如其名所示,它处理附加到用户个人资料上的图片。
简单地将它拖到新图片面板或从文件选择器中选择图片以上传新图片。图片的大小不能超过列出的最大尺寸;如果您的图片太大,建议将其大小减少到至少 100 x 100 像素。支持的格式是 GIF、PNG 和 JPEG 系列;然而,请注意透明背景,因为它们可能在某些浏览器中引起问题。
图片描述字段用作 alt 标签,为非视觉浏览器提供图片描述;它符合无障碍指南。

图 5.3 – 用户资料字段 – 用户图片
一旦分配了图片,它将显示在无标签的位置。要删除图片,请勾选删除复选框,当更新资料信息时,图片将被删除。
Moodle 将自动裁剪图片成方形,并将其调整到 100 x 100 像素用于大视图和 35 x 35 像素用于小缩略图视图。
重要提示
在上传过程中自动创建两个缩略图,这可以将文件大小减少到大约 4 KB。管理员可以通过 <moodleurl>/userpix URL 查看所有上传的用户图片。
Moodle 也支持Gravatar,所谓的全球认可的头像。一旦你在网站管理 | 用户 | 权限 | 用户策略上选择启用 Gravatar选项,Moodle 将尝试从 gravatar.com 获取用户资料图片,如果用户没有上传图片。
如果你怀疑你的学习者可能会通过上传不适当的图片来滥用这个功能,你可以禁用此功能。前往网站管理 | 安全 | 网站安全设置并勾选禁用用户资料图片复选框。请记住,一旦此功能被禁用,图片将无法分配给任何用户(除了管理员),教师也无法在课程中使用图片代表小组。
用户资料字段 – 其他名字
此其他名字部分包括以下字段:
-
名字 – 音译和姓氏 – 音译:该字段对的使用场景主要在远东语言中,用户有原始版本和罗马化版本或音译名字显示(例如,拼音)。
-
中间名:在某些文化中,有显示三个或更多名字的情况很常见。
-
别名:这可以是一个昵称、一个处理名或特定教学环境中的别名,例如,在游戏化或角色扮演场景中。
用户资料字段 – 兴趣
兴趣,如爱好或职业活动,可以逐个输入。要删除标签,选择其标签。所提供的兴趣列表代表在用户资料中显示的标签。你可以在 docs.moodle.org/en/Tags 和 第九章,配置教育功能中找到更多关于标签的信息。

图 5.4 – 用户资料字段 – 兴趣
用户资料字段 – 可选
更多个人详细信息被归类在可选类别下:
-
ID 号可以包含学生号或员工号,通常用于同步工具,如人力资源系统。
-
机构和部门可能用于大学的校园和学院。如果您使用 Moodle Workplace,不要将这些字段与组织结构中的部门混淆,包括部门框架、职位、工作分配和管理员。
-
电话、移动电话和地址应该很容易理解。
一些组织将未使用的字段重命名为其设置中所需的字段。有关此信息,请参阅第十章中的本地化部分,配置技术功能。
这就完成了预定义用户资料字段的解释。列表可以通过以下章节中介绍的定制字段进行扩展。
创建用户自定义资料字段
Moodle 允许将新的任意字段添加到用户资料中。我们已经在上一章中描述了用户自定义字段的 管理,当时我们处理了自定义课程字段。由于使用了相同的机制来处理用户资料字段,我们只处理与账户相关的特殊问题。
我们刚刚了解到资料字段被组织成类别(例如,通用、用户图片、兴趣和可选)。可以创建额外的类别,并将用户自定义字段放置在这些新类别中。您可以通过导航到网站管理 | 用户 | 账户 | 用户资料字段来找到这个功能。
与自定义课程不同,已经存在一个默认类别,称为其他字段,可以通过标准 Moodle 图标进行删除或重命名。在添加资料字段后,点击用户资料底部的创建新资料类别按钮即可创建新类别。
课程中的五个资料字段类型(复选框、日期/时间、下拉菜单、文本区域和文本输入)适用于用户,还有一个额外的类型:社交。让我们来了解一下字段特定设置中的差异:
-
复选框:这与自定义课程字段相同。
-
日期/时间:而不是最小值和最大值,两个日期边界分别是开始年份和结束年份。还有一个包含时间?选项,尽管您不能指定默认时间。
-
下拉菜单:这与自定义课程字段相同。
-
社交:这种新的字段类型允许您指定社交网络 ID,例如用户的 Skype 昵称。您在网络类型列表中看到的选项以前是硬编码在用户资料中的。让我们希望这个列表很快就能更新到 21 世纪,以支持 Facebook、Twitter、Instagram 和 TikTok 等社交媒体平台,而不是过时的服务如 ICQ 和 AIM。
如果您从 Moodle 3.x 升级,并且这些服务中有任何内容,它们将被保留并自动转换。

图 5.5 – 社交类型用户资料字段
-
文本区域:这与自定义课程字段中的完全相同。
-
文本输入:这与课程中的短文本字段相同,但一些字段已被重命名:表单输入大小现在是显示大小,而最大字符数现在是字符限制。为什么?我完全没有头绪!
用户资料字段中的每个字段类型都有与自定义课程字段相同的参数,但有三个显著的不同点:
-
字段排列略有不同,常见的字段设置锁定和可见已被移动到常规部分。
-
谁可以看到字段的选项已被调整为如下。不再是教师,现在有两个选项可供选择,即对用户可见和对用户、教师和管理员可见。
-
唯一可用的附加设置是在注册页面上显示?。当启用自助注册时,必须在注册时提供几个默认字段。如果自定义字段也应显示在注册页面上,则必须将选项设置为是。此功能在商业培训设置中可能很有用,当需要额外信息,如学习者的地址或先前资历时。
为了展示用户资料字段的工作方式,让我们假设一个学校,你希望通过一个名为家长责任的新资料类别扩展用户资料,包括联系人和关系等字段:

图 5.6 – 用户资料字段示例
这完成了关于自定义用户资料字段的子节处理,扩展了标准用户资料。用户资料的第三和最后一个组成部分是用户偏好,我们将在下一节中介绍。
用户偏好
一些字段在技术上属于用户资料,但它们已被放置在moodle/user:editownprofile能力中,并允许他们通过专用表单指定偏好:
-
首选语言:系统默认语言显示,可以更改为用户的偏好语言。我们将在第十章 配置技术功能中处理本地化。
-
论坛偏好:邮件摘要类型确定用户如何接收存在订阅的论坛帖子。有三个可能的选择,即无摘要(每个论坛帖子一个单独的电子邮件),这是默认设置,完整(包含完整帖子的每日电子邮件)或主题(仅包含主题的每日电子邮件)。论坛自动订阅设置规定用户是否自动订阅他们发帖的论坛。使用实验性嵌套讨论视图选项提供了一种新的讨论视图;在印刷时,该功能仍在试验模式中。
-
如果论坛跟踪已启用,未阅读的帖子将被突出显示,这提高了论坛的可用性。在发送论坛帖子通知时,用户可以选择是否标记帖子为已读,以影响论坛跟踪。
-
编辑器偏好设置:此选项确定在文本区域中输入信息时应使用哪个编辑器。除非用户有特殊要求或偏好,否则应保留为默认编辑器选项。在第七章“增强 Moodle 的外观和感觉”中,您将了解更多关于编辑器的信息。
-
日历偏好设置:用户选择的日历和事件相关设置。日历将在第十章“配置技术功能”的专用部分中进行讨论。
-
内容库偏好设置:此设置确定用户创建的内容的可见性(公开或未列出)。我们将在第八章“理解 Moodle 插件”部分的H5P 集成部分中介绍内容。
-
消息偏好设置:这些设置控制隐私和通知偏好。我们将在第十章“配置技术功能”部分的通讯部分中处理消息。
-
通知偏好设置:用户可以选择不同通知类型的通道。我们将在第十章“配置技术功能”部分的通讯部分中处理消息。
可以通过导航到网站管理 | 用户 | 账户 | 用户默认偏好来指定一些设置(电子邮件、论坛和内容库)的默认偏好。
这完成了用户配置文件部分的介绍,其中我们介绍了标准和自定义配置文件字段,并简要地查看了一些用户偏好。现在,既然我们已经知道了用户配置文件的样子,让我们开始与用户互动。
执行标准用户操作
到目前为止,您已经了解了 Moodle 保存的用户信息类型以及如何扩展每个配置文件中存储的数据。现在,是时候与系统中的现有用户一起工作了,这包括浏览和筛选用户账户以及应用批量操作。
浏览用户
查看您的 Moodle 用户账户的最快方法是导航到网站管理 | 用户 | 账户 | 浏览用户列表。最初,会显示一个按姓名排序的用户列表。一次显示三十个用户,如果适用,您可以通过<<和>>链接进行导航,或者通过选择一个数字直接跳转到另一页。可以通过点击列标题按升序或降序对每一列进行排序。

图 5.7 – 浏览用户账户
您可以通过点击用户姓名来查看个人的资料。除了我们在本章第一部分介绍的字段外,您还可以看到登录活动,显示首次访问网站、最后访问网站以及登录时发生的最后 IP 地址。
您可以指定在列表和其他位置显示有关用户的哪些身份信息(用户名、ID 号、电子邮件地址、电话号码、部门、机构、城市和国家)。转到 moodle/site:viewuseridentity 能力。
重要提示
要伪装成另一个用户,请使用用户资料中的登录为选项。
当您查看另一个用户账户的资料时,您将在管理面板中看到一个登录为链接,这允许您伪装成另一个用户。当您作为管理员找不到问题时,此功能非常有用。要查看用户的全部资料字段或修改其中任何一个,如前所述,请点击编辑资料链接。要修改用户的任何偏好设置,请选择相应的链接。
返回用户列表,并在最右侧列中点击标准删除图标来删除用户。在用户被不可逆地删除之前,必须回答确认屏幕。实际上,用户只是从 Moodle 的用户界面中删除。内部上,用户保留在数据库中,并且已将删除标志打开,这是必要的,以便某些用户贡献不会消失,例如论坛帖子。技术上,可以通过在数据库中手动更改删除标志来恢复用户账户。
要暂停用户账户,切换显示/隐藏图标,这将触发账户暂停,如用户资料字段部分所述。
与浏览账户相关的是过滤,这可以缩小您正在处理的用户条目数量。这种细化机制在拥有大量用户账户的网站上尤其有用。
过滤用户
我们可能经常需要搜索特定的用户或一组用户。Moodle 提供了一个灵活的过滤机制来细化显示的用户列表。在基本模式下,您可以按用户的完整姓名进行过滤,这是姓名和姓氏的组合。以下过滤操作可用,所有这些操作均不区分大小写:
-
包含:提供的文本必须包含在字段中
-
不包含:这是包含的反面
-
等于:提供的文本必须与字段的值相同
-
以...开始:字段必须以提供的文本开头
-
以...结束:字段必须以提供的文本结束
-
为空:字段必须为空
例如,当添加一个过滤器,如用户全名以“cl”开头,所有以 cl 开头的用户都会显示。请查看以下屏幕截图:

图 5.8 – 过滤用户账户 I
您可以看到,现在添加的过滤器已激活,一旦添加了多个过滤器,它将变得更加有用(通过显示更多…链接切换到高级模式)。现在,我们可以将过滤器应用于广泛的字段:

图 5.9 – 过滤用户账户 II
例如,在前面的屏幕截图中,我们寻找所有用户名以22开头的用户(假设命名方案以入学年份开头)以及账户已被挂起。使用此机制,可以添加所需的任何数量的过滤器。
每次添加过滤器时,它都会显示在活动过滤器框架中,并应用于 Moodle 中的用户数据。

图 5.10 – 过滤用户账户 III
在这里,已添加了三个一目了然的过滤器。现在可以删除单个过滤器(选择过滤器并点击删除所选按钮)或删除所有过滤器。
文本字段的筛选标准在本节前面已描述。根据字段类型,可以使用一些额外的操作,如下表所示:

图 5.11 – 过滤操作
认证标准提供所有支持认证方法的选择。我们将在本章后面处理这些内容。如果指定了用户配置文件字段,则还会显示额外的用户配置文件字段标准,提供所有用户定义字段的选择(如之前所述)。
当前筛选设置被保存,可以在下次登录时使用。不仅如此,它们还被保存在下一节中将要介绍的批量用户操作中。
批量用户操作
批量操作允许管理员对多个用户执行单个操作,例如,强制更改密码或发送消息。为了说明批量用户操作的工作原理,请查看以下图中描述的用户操作筛选器:

图 5.12 – 批量用户操作筛选器
筛子模型的三个层级具有以下特点:
-
顶层显示系统中的所有用户(Moodle Workplace 中的租户)
-
中间层包含应用了活动过滤器后的所有用户
-
底层包含通过手动选择用户缩小列表后留下的任何用户
可以通过访问网站管理 | 用户 | 账户 | 批量用户操作来对所选用户账户组应用各种批量操作。

图 5.13 – 批量用户操作 I
屏幕包含三个主要部分。前两部分是熟悉的新过滤器和活动过滤器部分。有趣的是,已创建的过滤器也会显示在此屏幕上,因为它们已被保存。
第三部分显示所有过滤列表中符合指定过滤器标准的用户。在您可以对用户进行任何操作之前,您必须使用添加到选择按钮将他们移动到所有选择列表。在前面的屏幕截图中,除了一个用户外,所有用户都已移动。要将他们移回所有过滤列表,请选择用户并点击从选择中移除按钮。存在两个快捷按钮,允许您将所有过滤列表中的所有用户添加到所有选择列表,并使用全部移除来反向移动它们。
这种方法的优点是您可以连续应用多个过滤器并选择相应的用户,例如,在用户名以入学年份开头的设置中。假设您想选择 2022 年和 2023 年的所有用户,过滤出所有以23开头的用户名。
当点击With selected users...下拉菜单的Go按钮时,所选操作将对所有选择列表中的用户执行。以下表格显示了可用的操作:

图 5.14 – 批量用户操作 II
现在我们已经了解了如何处理现有用户,让我们看看他们是如何被添加到系统中的。
手动创建用户账户
有两种方式可以手动为用户提供账户以访问您的系统:
-
添加单个用户
-
批量上传用户,包括他们的用户图片
在以下三个部分中,您将了解如何执行和支持每种类型。
添加单个用户
要手动添加用户账户,请转到网站管理 | 用户 | 账户 | 添加新用户。或者,您也可以浏览用户列表,并在屏幕底部选择添加新用户按钮。您将看到与您之前编辑用户资料时相同的表单。
重要提示
手动添加用户应该是例外,而不是规则。强烈建议自动化此过程。
您应尽可能避免手动添加单个用户,因为这是一个非常耗时、繁琐且可能存在错误的过程。然而,在某些情况下,您无法避免这样做,例如,当学生在一学期中途加入学校或外部培训师需要访问 Moodle 但不是组织员工数据库的一部分时。
如果您要添加多个用户,请使用 Moodle 的批量上传功能,我们将在下一部分进行探讨。
批量上传和更新用户数据
批量上传用户允许从文本文件中导入多个用户账户或更新系统中已存在的用户账户。
学习者信息通常存在于现有应用程序中,例如内部学生管理系统或人力资源数据库,可以将数据导出为 Excel 电子表格或直接导出为文本文件。CSV 文件中的数据随后被加载到 Moodle 数据库中,如果指定,用户将被注册到课程中,并添加到班级成员中。此过程在以下工作流程图中显示:

图 5.15 – 批量用户上传
您可以在docs.moodle.org/en/Upload_users找到有关批量上传和更新用户的优秀和详细说明。我们将关注关键元素和上传工作流程,以补充已充分记录的功能。
文本文件格式
在上传用户之前,您必须生成一个符合特定格式的文本文件。其一般格式是逗号分隔值(CSV)文件,一种平面文本文件格式。虽然手动创建 CSV 文件(使用纯文本编辑器或电子表格应用程序)是可能的,但这些文件通常由托管用户数据的系统自动生成。
文本文件的格式如下:
-
文件的每一行必须包含一个单独的记录
-
每条记录必须是一系列由分隔符分隔的数据
-
文件的第一条记录必须包含定义文件其余部分结构的字段列表
一个有效的输入文件示例如下:
username, password, firstname, lastname, email
galmond, pwd, Graham, Almond, galmond@openumlaut.com
earmstrong, pwd, Eleanor, Armstrong, earmstrong@openumlaut.com
jarnold, pwd, Joanne, Arnold, jarnold@openumlaut.com
第一行包含提供的字段列表,而其余三行代表要上传的单独用户。
Moodle 的上传功能支持以下类型的数据字段:
-
必需:必须包含的必填字段
-
密码:密码字段
-
可选:如果没有提供值,将使用指定的默认值
-
自定义:用户定义的个人资料字段
-
注册:处理课程、角色和组
-
班级:将用户添加为班级成员
-
系统:将系统角色分配给用户或从用户中取消分配
-
特别:修改和删除用户账户
我们将逐一介绍每种字段类型,以更好地了解 Moodle 的用户批量上传工作原理以及如何在您的设置中使用它。
必需字段
当添加新用户时,只需firstname和lastname是必填项。当更新记录时,只需username。你可能还记得用户资料中还有一些其他必填字段,例如用户名或电子邮件地址。如果这些字段没有提供,必须通过模板指定默认值。我们将在本章后面处理模板。
示例文件是一个包含五个字段的输入文件示例,包括必需的firstname和lastname。
密码
除非cron进程运行,否则需要password值。
注意
如果将password设置为changeme,则用户在首次登录时将被强制更改密码。更好的方法是使用强制密码更改选项。
可选字段
如其名所示,可选字段不必指定——如果它们未包含在文本文件中,则如果存在,则使用默认值。以下为这些可选字段:

图 5.16 – 用户上传(可选字段)
当必须使用默认设置时,必须包含空字段。即使在每个记录的最后一个字段,这些字段也必须保持为空。空字段由两个连续的逗号表示,如下所示,在示例文件中:
username, password, firstname, lastname, email, city
galmond, changeme, Graham, Almond, galmond@openumlaut.com, Kyiv
earmstrong, , Eleanor, Armstrong, ermstrong@openumlaut.com,
jarnold, , Joanne, Arnold, jrnold@openumlaut.com, Doha
在前面的示例文件中已添加city字段,并将默认城市设置为city值。对于password字段,默认值也已设置为空。
自定义配置文件字段
您指定的任何用户定义字段(在我们的案例中,那些用于家长责任)也可以作为批量上传过程的一部分使用。每个字段必须以profile_field_开头;例如,代表 Skype ID 的字段将被标记为profile_field_skype_id。
自定义字段的处理方式与可选字段完全相同。如果指定了值,则使用这些值;如果没有指定,如果存在,则使用默认值。
报名字段
报名字段允许您将角色分配给用户;您可以在课程中注册他们并将他们分配到组。角色将在第六章中详细说明,管理权限、角色和能力。
每门课程必须通过course1、course2、course3等单独指定。课程名称是课程的简称,并且是唯一的强制报名字段。每个相应的类型、角色、组、报名开始时间、报名期限和报名状态必须具有相同的后缀:type1、role1、group1、enroltimestart1、enrolperiod1和enrolstatus1对应于course1。
还可以设置用户在课程中的角色。每个角色都有一个角色简称和角色 ID,可以指定其中之一。如果类型留空或未指定课程,则用户将被注册为学生。报名期限以天为单位设置报名期限;当设置为1时,报名状态将暂停用户参加课程。
如果您想将用户分配到课程中的组(例如,course1中的group1,course2中的group2等),您必须指定组名或 ID。如果指定的组不存在,它将被自动创建。
以下示例演示了一些登记功能:
username, course1, role1, course2
galmond, Advanced, editingteacher, Staff
earmstrong, Advanced, examiner, Staff
jarnold, Basic, 3, Staff
course1字段及其对应的role1和course2是可选的登记字段。Graham Almond (galmond)将被分配到Advanced课程的editingteacher角色,Eva Armstrong (earmstrong)将被分配到examiner角色。Jonny Arnold (jarnold)将在Basic课程中担任editingteacher(角色 ID 为3)。所有三位用户都将被分配到Staff课程的student角色(未指定角色,因此默认设置为)。
群体字段
群体字段允许您将用户添加为群体的成员。与课程中的登记和分组一样,字段名必须后缀一个计数器:cohort1、cohort2等等。以下是一个示例文件片段:
username, firstname, lastname, cohort1, cohort2
pupil1, Pupil, One, 7a, drama
pupil2, Pupil, Two, 7a, archery
用户可以被添加到系统群体以及上下文群体。群体将在本节主要部分之后处理。
系统角色
如果您需要分配用户系统角色,您必须通过sysrole1、sysrole2等指定此角色。字段的值必须是角色的shortname,例如manager或coursecreator。
您还可以通过在角色名称前加减号来从用户中取消分配系统角色,例如-manager或-coursecreator。
特殊字段
支持以下特殊字段:
-
oldusername:当更改用户名时,您必须提供当前值 -
deleted: 当删除用户时,您将deleted设置为1 -
suspended: 当暂停用户时,将suspended设置为1;要激活,设置为0
特殊字段是文本文件格式的最后一类文本。一旦您创建了用户文件,就是时候将用户上传到 Moodle 了,我们将在下一部分讨论。
上传用户
上传用户是一个四步过程,如下面的图所示:

图 5.17 – 用户上传工作流程
工作流程包括以下四个步骤:
-
创建或生成 CSV 文件
-
上传文件,指定元数据和查看数据预览
-
配置上传设置和默认值
-
检查上传结果
我们已经在上一小节中介绍了步骤 1,所以让我们直接跳到第二和第三阶段。要批量上传或更新用户,请转到网站管理 | 用户 | 账户 | 上传用户,其中以下设置可用:
-
文件:文本文件的名称。
-
CSV 分隔符:指定分隔符是逗号(默认)、分号、冒号还是制表符。例如,在大多数欧洲地区,如德国、法国和荷兰,默认分隔符是分号!
-
编码:您上传文件的编码方案指定了它被保存的 locale(默认为UTF-8)。
-
预览行:预览屏幕上显示的行数。

图 5.18 – 上传用户配置
一旦确认此屏幕,您将看到以下四个部分:
-
上传用户预览:预览屏幕上显示的指定行数的预览。要跳过的记录将不会显示。
-
设置:取决于所选上传类型的不同选项。
-
默认值:可以设置默认值的所有用户字段。
-
自定义值:如果有,按类别分组的任何用户定义字段。
记住,并非所有设置都适用于所有上传类型;如果它们不适用,它们将保持隐藏。以下表格显示了哪些设置适用于哪些上传类型:

图 5.19 – 上传用户设置
这里是每个上传用户设置的简要说明:
-
如果未指定,
cron进程将自动生成一个一次性密码(如有需要创建密码并通过电子邮件发送)。 -
现有用户详情:指定在账户更新时对现有用户详情执行的操作。选项包括无更改、用文件覆盖、用文件和默认值覆盖以及从文件和默认值中填写缺失[字段]。
-
现有用户密码:指定当用户详细信息更新时用户密码会发生什么。密码可以保持不变(无更改)或被覆盖(更新)。
-
强制密码更改:指定何时标记需要用户更改密码的账户(拥有弱密码的用户、无和所有)。
-
oldusername字段。 -
deleted字段。 -
suspended字段。 -
防止电子邮件地址重复:多个用户可以拥有相同的电子邮件地址(如理解用户配置文件部分所述)。此设置仅在站点管理 | 插件 | 认证 | 管理认证上启用了允许具有相同电子邮件的账户时才会显示。
-
标准化用户名:从用户名中删除任何无效字符(除非允许,则为扩展字符以及空格)并确保所有字符都是小写。
-
选择批量用户操作:您可以指定是否选择新用户、更新用户或所有用户进行批量操作。您将在用户列表中看到批量用户操作的名称。
到目前为止已经提到了几次默认值;现在,是时候与模板一起处理它们了。
设置默认值和模板
Moodle 的用户批量上传功能支持默认值,如果未设置值,则使用这些默认值。默认值涵盖所有可以上传的用户配置文件字段以及用户定义的自定义字段。
每个基于文本的字段都可以使用模板进行填充。此功能对于可选字段很有帮助,例如学生的网站 URL,如果它们在 CSV 文件中未指定,则对于必填字段是强制性的,例如 username 和 email。如果后者是这种情况,Moodle 将会警告您。例如,在下面的屏幕截图中,用户名模板尚未提供,这由红色警告信息表示:

图 5.20 – 模板缺失
模板(或模式)将根据其他字段的值和您指定的标准字符创建一个值。模板可以包含以下内容:
-
替换值:值由相应的配置文件字段替换
-
模板修饰符:根据修饰符转换或截断值
-
标准文本:包含没有任何修改的纯文本
下表可能有助于澄清前面的概念:

图 5.21 – 模板内容
有四个替换值,由百分比表示。例如,如果用户名应该是用户的名字,后面跟着一个点,然后是姓氏,模板看起来就像 %f.%l。
在 % 符号和三个代码字母(l、f 和 u)中的任何一个之间可以包含四个修饰符,其中井号代表十进制数字。最后一个模板是一个示例,它将替换值嵌入到其他文本中;在这种情况下,它是一个代表用户主页的 URL。
这完成了我们用户上传工作流程的第三步。最后一步是加载和审查实际的用户数据。
数据加载
一旦所有设置都已指定,默认值已提供,并且已按下上传用户按钮,Moodle 将最终开始实际的导入过程。
重要提示
强烈建议您首先创建一个包含较少虚拟记录的测试文件,以确保语法正确。
Moodle 显示一个包含所有已添加和/或更改的用户字段的大表。它还显示每个字段的状况,包括发生的任何问题或错误。
结果屏幕底部会显示一条消息,总结上传过程。它包含创建和更新的用户数量,那些有弱密码(根据密码策略),以及错误数量。请看以下屏幕截图:

图 5.22 – 审查上传结果
建议您立即识别无效的用户账户,并手动修改它们的用户设置或修复上传文件并重新运行。
批量用户操作提供了一种灵活的方法来创建和更新文本用户数据。然而,CSV 文件无法处理的一种用户信息类型是:个人资料图片。Moodle 提供了一个专门处理用户图片的功能。让我们在下一节中看看它。
上传用户图片
如前所述,上传用户的过程不支持个人资料图片;相反,用户图片必须单独上传。上传用户图片的工作流程简单而有效,如下面的图所示:

图 5.23 – 用户图片上传工作流程
上传用户图片工具可以在 attribute.ext 找到。
ext 是文件扩展名(.jpg、.gif 或 .png)。图片文件名不区分大小写。

图 5.24 – 上传用户图片
例如,如果用户名由名字的首字母和姓氏组成(如果以模板风格表达为 %1f%l),则有效的文件名是 psmith.png、lcohen.png 和 mstripe.png。如果用户存在,图片将被添加到他们的个人资料中;否则,将被忽略。如果用户的个人资料中已经存在图片,只有当您启用了覆盖现有用户图片?选项时,它才会被替换。
到目前为止,我们只按账户逐个查看单个用户。Moodle 作为一个支持学习者与教师之间沟通和协作的学习系统而蓬勃发展。为了支持协作,用户可以以两种方式排列:课程级别的组和分组,以及系统或类别级别的群体。我们已经在上一章和用户批量上传期间遇到了组,现在让我们更详细地看看群体。
管理群体
我们已经在 第四章 管理和注册课程 以及本章的简介图中遇到了群体。
重要提示
群体是用于逻辑上聚集相关用户的组。
到目前为止,我们主要在注册的背景下提到了群体;然而,Moodle 在多个地方使用群体,如下所示:
-
课程注册和同步
-
群体主题为预定义的用户群体提供用户体验,例如,视觉障碍学习者
-
报告受众以限制报告对群体的访问
-
自动执行操作,例如作为动态规则(仅限 Moodle Workplace)的一部分通知或颁发证书给群体
放大查看群体元素,我们可以看到其结构和属性:

图 5.25 – 群体(高级)
让我们更详细地看看如何创建和管理群体。为此,导航到 网站管理 | 用户 | 账户 | 群体。

图 5.26 – 可用班级
提供了每个班级的详细信息及其标准操作(隐藏、删除、编辑和分配)。所有班级标签提供几乎相同的视图,显示系统和类别班级。
要创建班级,请选择添加新班级标签并指定班级属性。上下文是班级的范围,表示班级可以使用的位置;选项是系统(全局或站点范围)和所选类别。班级 ID是可选的,但将其设置为良好实践,因为它将在不同的操作中使用,例如在添加批量用户时。

图 5.27 – 添加班级
一旦添加了班级,你将返回所有班级的列表。现在,你应该通过选择分配图标来添加成员,这将显示熟悉的用户选择屏幕以添加或删除班级成员资格。
重要提示
从班级中删除用户将取消他们在所有已启用班级同步的课程中的注册!
您可以通过上传班级标签批量执行此任务,而不是手动添加班级。这与上一节中描述的批量添加用户的原则相同。以下是一个表示之前使用的班级的示例文件:
name, contextid, idnumber, description, visible
7a, 1, 7a, 7a 班的所有学生,1
7b, 1, 7b, 7b 班的所有学生,1
7c, 1, 7c, 7c 班的所有学生,1
Temp, , , 用作占位符,0
您可以在docs.moodle.org/en/Upload_cohorts上找到有关上传班级的详细信息,包括可选和附加字段。
现在您已经了解了有关用户账户及其存储的信息的所有内容,让我们看看如何使用 Moodle 进行用户认证。
配置用户认证
认证是获取系统访问权限的过程。Moodle 支持大量的认证类型。此外,Moodle 支持多认证,即来自不同认证源的并发认证。例如,您的组织可能使用包含所有员工信息的 LDAP 服务器,并为学生使用 OAuth2,但希望本地管理兼职用户。
在本章的后半部分,我们将探讨用户认证和认证插件的总体管理,然后介绍常见的认证设置。然后,我们将处理所有认证方法,这些方法已被分为四类:内部、外部、提供者和系统。
探索用户认证
记住我们在第三章“探索课程、用户和角色”中查看的基本认证工作流程。现在,我们可以查看一个更完整的图景,如下所示:

图 5.28 – 认证工作流程
让我们从顶部开始,用户在此输入他们的用户凭据,例如,用户名和密码。请注意,这可能会自动完成,例如,在单点登录设置或通过服务提供商登录。Moodle 会检查是否存在该用户的个人资料。如果存在并且账户通过内部机制进行认证,Moodle 只需检查凭据是否有效。
如果用户个人资料不存在,这通常是用户第一次尝试登录时的情况,Moodle 会检查任何启用和配置的外部提供者基于的认证机制。如果存在有效条目,将创建一个账户,任何存在映射的现有数据将被复制到本地用户个人资料,并授予访问权限。
一旦个人资料存在并且认证是外部或通过提供者,Moodle 会检查凭据是否适用于设置的认证方法。如果是这种情况,源中的任何修改数据将被更新,并授予访问权限。
管理用户认证
要访问所有认证插件,请转到 站点管理 | 插件 | 认证 | 管理认证。您将看到可用的认证插件列表。每个插件可以通过切换 显示/隐藏 图标来激活/停用。本节中讨论的每种类型的设置可以通过其相应的链接或一旦认证方法激活,直接通过插件菜单中的链接访问。
您还可以通过上下箭头更改 Moodle 尝试通过认证用户的顺序。
重要提示
认证插件应用的顺序将影响用户登录所需的时间,所以请确保主要插件位于顶部。
用户 列提供了每个认证机制的注册用户数量的指示。

图 5.29 – 认证插件
通过外部插件支持额外的认证方法,例如 moodle.org/plugins/?q=type:auth 上的 OpenID 和 SAML2。一旦安装(请参阅 第八章 中的 安装第三方插件 部分,理解 Moodle 插件),它们将出现在列表中,并列在所有核心认证方法旁边。不建议您通过 卸载 选项删除插件——而是在系统级别删除它们。
以下图表展示了 Moodle 认证插件的聚类:

图 5.30 – 认证插件分组
此分组也形成了本章剩余部分的结构,从所有机制共享的常见认证设置开始。
常见认证设置
首先,让我们看看常见的身份验证设置,您将在可用的插件列表下看到这些设置。无论您首选的身份验证系统(们)是什么,都有几个常见的设置适用于所有方法:
-
自注册:指定是否使用任何插件进行自注册(有关详细信息,请参阅下一节)。
-
允许通过电子邮件登录:用户可以通过用户名或电子邮件地址登录,只要电子邮件地址是唯一的。
-
允许具有相同电子邮件的账户:在某些设置中,用户将不得不共享相同的电子邮件地址。我们在理解用户配置文件部分讨论了此话题。
-
在身份验证时防止创建账户:一些身份验证机制(例如,LDAP)支持创建新账户。如果阻止了这一点,您必须确保通过其他方式创建账户。
-
自动聚焦登录页面表单:当启用时,如果登录页面上的光标为空,它将始终直接跳转到用户名输入字段;否则,跳转到密码字段。
-
访客登录按钮:默认情况下,允许访客访问您的 Moodle 系统。如果您禁用此功能,这是大多数教育和商业网站推荐的做法,访客登录按钮将不会显示在登录屏幕上。
重要提示
确保禁用您的 Moodle 系统的访客访问,以防止不想要的注册。
-
限制并发登录:您可以指定同时登录的浏览器数量。一旦超过这个数量,最旧的会话将被终止。这种限制在考试场景中很有用,您可能只允许单个并发登录。
-
备用登录 URL:默认情况下,用户必须通过标准登录屏幕登录到 Moodle。但是,为了更改登录凭据(用户名和密码)的来源,请在此处输入正确的 URL。如果您希望在单独的网页(如主页)上有一个登录块,则需要此重定向。此机制的详细信息在第七章的自定义登录子节中展示,增强 Moodle 的外观和感觉。
-
忘记密码 URL:Moodle 有一个内置机制来处理丢失或忘记的密码。如果您使用具有自己的密码恢复系统的身份验证方法,请在此处输入其 URL。
-
说明:提供有关如何注册系统以及用户名应具有的格式的信息是一种好习惯(这仅适用于自注册)。如果留空,则存在默认说明。
-
openumlaut.com或.edu。 -
更改电子邮件时限制域名:如果启用,允许/拒绝的电子邮件域名设置也将应用于更改电子邮件地址时。
-
ReCAPTCHA 公共/私有密钥:这是在注册表单上显示 reCAPTCHA 元素或与 reCAPTCHA 服务器通信的密钥(请参阅基于电子邮件的自注册部分)。
一旦我们处理了它们影响的认证方法,一些常见的认证设置将更有意义。让我们从内部认证方法开始。
内部认证方法
内部认证方法处理 Moodle 内的所有认证;没有连接到其他系统。有两种内部认证方法:手动账户和基于电子邮件的自注册。
手动账户
手动账户认证简单来说就是在登录时验证输入的用户凭据(用户名和密码)是否正确存储在 Moodle 中。
重要提示
主要的 Moodle 管理员账户始终是手动账户。
所有手动创建的账户都有两种类型的设置:密码过期和用户字段的锁定。两者都可以通过导航到站点管理 | 插件 | 认证 | 手动账户进行更改。

图 5.31 – 手动账户设置
密码过期允许您通过密码持续时间设置选择密码有效的时间长度,在此期间用户必须更改密码。通知阈值允许您指定何时通知用户进行密码轮换。
您可以为手动创建或通过批量文件上传的账户锁定字段。这种锁定机制在您不希望用户更改其用户资料中的特定数据时非常有用——年轻学生可能会滥用描述字段,ID 号可能用于内部链接到其他系统,公司可能已提供电子邮件地址,等等。
默认情况下,所有字段都是未锁定的。如果字段被锁定,用户将无法更改其值。如果您锁定任何必填字段,您必须确保它们被正确填写,或者将它们的锁定状态设置为如果为空则解锁。后者将强制用户在下次登录时输入值,然后锁定该字段。
通过手动认证方法验证的账户通常是通过手动创建或通过用户批量上传创建的。这两种操作在本章的第一部分已有详细描述,其中后者有效地自动化了手动账户创建。还有两种其他认证机制模仿手动添加用户账户:网络服务,我们将在后面的系统认证方法部分处理,以及基于电子邮件的自注册,我们将在下一部分进行介绍。
基于电子邮件的自注册
Moodle 支持一种机制,允许用户在不干预或无需管理员知识的情况下创建账户。当新用户通过登录屏幕上的创建新账户按钮注册 Moodle 时,他们可以选择新的用户名和密码。一旦完成此步骤,就会向用户的电子邮件地址发送一封确认邮件,其中包含一个必须确认以激活账户的安全链接。注册屏幕看起来像这样:

图 5.32 – 自助注册注册屏幕
我们解释了如何通过显示在注册页面选项向注册屏幕添加更多项目(处理用户定义的个人资料字段时)。在商业培训设置中,当需要收集额外的数据,如学习者的地址、参与者的饮食要求或客户编号时,这个功能通常非常有价值。
Moodle 支持在图片所示的注册屏幕上激活的reCAPTCHA机制。该功能用于防止机器人自动注册。要启用此功能,您必须在www.google.com/recaptcha上注册一个账户,在管理认证区域的常规设置中添加公钥和私钥,并启用reCAPTCHA元素。
重要提示
为了 reCAPTCHA 能够工作,必须安装 PHP cURL 扩展。
可以像手动账户一样为自助注册设置相同的锁定设置(转到站点管理 | 插件 | 认证 | 基于电子邮件的自助注册)。此外,还适用前面描述的限制。另外,您还有启用 reCAPTCHA 元素选项。
当您导航到站点管理 | 用户 | 隐私和政策 | 策略设置时,如果指定了用户策略,注册屏幕上会显示一个带有确认复选框的协议链接。我们将在第十四章“遵守数据保护法规”部分作为 GDPR 设置的一部分处理更复杂的用户同意处理。
如果确认电子邮件无法发送,例如,由于技术问题,请转到用户列表,在那里您将在账户条目旁边找到两个链接:一个用于确认账户,一个用于重新发送电子邮件。
在我们继续到下一个认证方法之前,这里有一个设置自助注册的简要清单(除了启用之外,所有步骤都是可选的):

图 5.33 – 自助注册清单
允许用户在您的网站上注册账户伴随着一定程度的风险,因为您无法控制谁——人类或机器人——正在访问您的网站(假设它是公开可访问的)。因此,强烈建议您彻底测试自助注册并定期检查新用户列表。
现在我们已经涵盖了内部认证,是时候越过(Moodle)的围栏,处理外部方法了。
外部认证方法
外部认证方法需要一个单独的、连接的系统来处理认证。我们将详细介绍两种外部认证方法(LDAP 和数据库),以及另外两种我们只简要描述的方法(CAS 和 Shibboleth)。
LDAP 服务器
在上一章中,我们已经看到了在处理课程注册时对 LDAP 的基本介绍。现在,让我们看看它如何被用于单点登录(SSO)认证。我们只会涵盖基本的 LDAP 设置,不包括高级设置,如多个 LDAP 服务器和安全的 LDAP。这些配置在docs.moodle.org/en/LDAP_authentication中有详细的文档。
LDAP 认证方法的原理相对简单但有效——如果输入的用户名和密码有效,Moodle 会在其数据库中创建一个新的用户账户,如果它之前不存在。一旦存在,即从第二次登录开始,凭证将针对 LDAP 进行有效性检查。
重要提示
服务器上必须安装 PHP LDAP 扩展,以便 LDAP 认证能够工作。
前往站点管理 | 插件 | 认证 | LDAP 服务器以查看设置,这些设置还包括活动目录(Microsoft 对 LDAP 的实现)。您必须设置许多参数才能与 LDAP 服务器通信。设置已经经过详细说明(我将不会重复),而是在适用的地方提供了额外信息。如果您不确定如何找到一些所需信息,请联系您的系统管理员。
为了使 Moodle 在您的 LDAP 设置中工作,必须填写两个部分:服务器设置和数据映射,将在以下段落中讨论。
必须提供十个LDAP 服务器设置部分:
-
LDAP 服务器设置:这些建立与目录的连接。也支持具有 SSL 加密的 LDAP 服务器。
-
如果
ou=Students和ou=Staff以及您的学生占登录的 90%,建议您将它们放在讲师之前,除非工作人员被赋予优先权。 -
用户查找设置:这些描述了用户详细信息在您的 LDAP 目录中如何以及在哪里存储。确保您选择了正确的用户类型。对于多个上下文中的绑定设置中的区分名也是如此。正确设置搜索子上下文至关重要。如果设置为否,则不会搜索子上下文,但搜索可能更快,反之亦然。
-
强制更改密码:这指定了用户首次访问 Moodle 时是否以及如何更改密码。
-
LDAP 密码过期设置:这些涉及密码过期以及如何处理这个问题。
-
启用用户创建:这允许您激活一个类似于自助注册的机制,但除此之外,还会使用您的 LDAP 中的值创建一个账户。
-
系统角色映射:这指定了哪些 LDAP 用户组将在 Moodle 中分别拥有管理者和课程创建者权限。
-
用户账户同步:此设置指定当 LDAP 服务器上删除了这些本地用户账户时,Moodle 应该如何处理这些账户。
-
NTLM 单点登录:这描述了在基于 Windows 的环境中使用 MS-AD 和 NTLM 激活时,用户如何通过 Windows 域登录,在访问 Moodle 时无需重新输入凭据。有关详细信息,请参阅docs.moodle.org/en/NTLM_authentication。
实际上非常长的屏幕的第二部分包含 LDAP 数据映射。用户配置信息通常存储在 LDAP 服务器上。为了连接用户配置文件字段和活动目录,必须为 Moodle 中每个字段(包括用户定义的配置文件字段)指定其在目录中的对应项,从而提供映射。所有字段都是可选的。如果您留空任何字段,将使用默认值:

图 5.34 – LDAP 身份验证(数据映射)
如果您提供字段信息,您将为每个数据字段设置四个参数,如下所示:
-
数据映射:这是外部数据库中代表 Moodle 中值的字段名称。
-
更新本地:对于每个外部用户,信息存储在本地。您可以使用创建时(这更快,但可能不是最新的)或每次登录时(这稍微慢一些,但总是最新的)来更新此信息。
-
更新外部:如果用户在 Moodle 中更新数据字段的值,您可以决定是否要将此信息写回外部数据库(更新时)或不会(从不)。通常,外部数据库是一个只读视图,防止 Moodle 更新其中的数据。
-
锁定值:您可以指定用户是否可以修改值。如前所述,设置(未锁定、为空时未锁定和锁定)与锁定字段设置相同。
如果您使用 Microsoft 的 Active Directory MS-AD,请参阅docs.moodle.org/en/LDAP_authentication中的数据映射部分以获取详细信息。
设置 LDAP 身份验证可能需要一些试错。通过位于可用身份验证插件列表中的测试设置功能可以辅助验证连接是否正常。将显示更详细的错误消息,这将帮助您识别任何 SSO 连接问题。
当使用 LDAP 时,您可能会遇到一种情况,即在用户首次登录系统之前,您希望将课程分配给用户。这种情况通常在学年开始前适用。问题是本地用户账户尚不存在,您无法访问这些信息,因为它们仅存储在外部目录中。有两种方法可以解决这个问题:
-
通过批处理文件创建用户账户并将
auth字段设置为ldap;这样,您实际上模仿了每个用户的初始登录。 -
设置LDAP 用户同步作业计划任务。任务在第十五章,优化 Moodle 性能中有所介绍。
LDAP 实际上是一个用于认证目的的专用和轻量级数据库。对 LDAP 的认证与对外部数据库的认证非常相似,这是下一小节的主题。
外部数据库
大多数大型组织使用一个学生或管理信息系统——无论是开源(好),专有(坏),还是内部开发(最差)——它包含有关员工和学习者的信息。利用这些数据为 Moodle 进行授权是完全合理的。由于所有信息系统在其核心都使用数据库,我们只需要获取相关数据的访问权限。
IT 部门通常不希望外部系统直接连接到他们的数据库。一个已被证明很有价值的机制是只读视图,它具有几个优点:
-
可以准备一个用于 Moodle 使用的视图;只显示所需的字段,并按照所需格式显示
-
没有对数据库的写访问权限
-
如果信息系统的数据库模式发生变化,只需调整视图,而不需要调整 Moodle 配置
外部数据库认证方法包含两种类型的参数,您需要通过访问站点管理 | 插件 | 认证 | 外部数据库来提供:连接设置和数据映射。

图 5.35 – 外部数据库认证
数据库连接设置已经进行了良好的说明。如果您不确定如何找到一些所需信息,请联系您的数据库管理员。
重要提示
一些数据库,如 Oracle,是大小写敏感的,字段名称必须提供正确的首字母大小写,以便数据库链接能够正确工作。
设置屏幕的第二部分包含数据映射。用户配置文件信息存储在外部数据库中。为了连接 Moodle 中的用户配置文件字段和数据库,必须提供一个映射,其中外部存储库中必须为 Moodle 中的每个字段提供一个对应字段。所有字段都是可选的,如果您留空任何字段,则使用默认值。
在 LDAP 部分中涵盖的大多数功能也适用于外部数据库认证:
-
通过批处理文件创建用户账户(将
auth字段设置为db) -
通过任务计划程序自动化同步,同步用户任务
-
测试数据库连接
总结本主题,以下是一个外部认证方法的清单:

图 5.36 – 外部数据库身份验证清单
希望前两个小节能让你对 Moodle 中外部身份验证机制的工作方式有所了解。还有两种方法属于同一类别:CAS 和 Shibboleth。
其他外部身份验证机制
Moodle 支持一些额外的外部 SSO 身份验证方法,这些方法不像 LDAP、外部数据库和 OAuth 2 那样常用;我们只简要地提及它们:
-
CAS 服务器(SSO):中央认证服务(CAS)是一个基于 Tomcat 的开源身份验证服务器,支持在 Web 环境中的单点登录。CAS 在包含多个身份验证源和消费者的环境中特别受欢迎。它使用 LDAP,因此需要安装 PHP LDAP 模块。
-
<YOURSITE>/auth/shibboleth/README.txt。有关 Shibboleth 的更多信息,请访问 www.internet2.edu/products-services/trust-identity-middleware/shibboleth。
到目前为止所涵盖的所有身份验证机制要么是 Moodle 内部的(手动账户和自助注册),要么通常是组织内部的但外部于 Moodle(LDAP 或数据库)。Moodle 还支持通过 OAuth 2 的基于提供者的身份验证服务,我们将在下一节中介绍。
基于服务提供者的身份验证(OAuth 2)
OAuth 2.0 是事实上的行业标准用户授权协议。OAuth 2 身份验证使用户能够通过登录页面上的按钮使用来自流行服务提供商(如 Google、Microsoft、Facebook 和 LinkedIn)的凭据访问 Moodle。

图 5.37 – 通过 OAuth 2 服务提供者进行身份验证
在我们深入到基于服务提供者的身份验证配置之前,先看看交互图,它说明了 OAuth 2 在 Moodle 环境中的工作方式:

图 5.38 – OAuth 2 交互
OAuth 服务提供者是提供身份(通过授权服务器)和 API 访问(通过资源服务器)的外部系统(“在云端”),通过向客户端(Moodle)颁发 OAuth 访问令牌来实现。让我们从上到下了解这些交互:
-
用户发送一个 授权请求;即用户通过客户端登录到服务提供商。这一步骤是通过 Moodle 登录屏幕上的服务提供商按钮触发的。
-
如果输入的凭据有效,授权服务器将颁发一个 授权码。一旦发生这种情况,用户将通过 Moodle 进行身份验证。如果启用了账户创建(在身份验证时防止创建账户设置),将创建一个新账户。否则,用户将被提示将授权链接到具有相同电子邮件地址的现有账户。可以在用户的偏好设置中的 已链接登录 部分找到条目。
-
\core\oauth2\refresh_system_tokens_task)。 -
Moodle 使用此访问令牌来访问任何需要从服务提供商获取资源的内部服务,例如,从存储库中的文件链接。一些内部服务需要连接到系统账户。
上述交互过程是对 Moodle 中 OAuth 2 认证工作原理的非常粗略的总结,但这应该足以理解整体概念。好的,关于高级内容就到这里;让我们开始设置服务提供商认证。
第一步是在网站管理 | 服务器 | 服务器 | OAuth 2 服务中配置 OAuth 2 服务。

图 5.39 – OAuth 2 服务
在底部,您可以查看所有支持的服务提供商。选择相应的按钮以添加预配置的服务,这将带您到创建新服务的表单。服务规范已经填写完毕——您只需添加相应服务提供商的客户端 ID和客户端密钥详情。
您如何获取客户端 ID 和密钥?发行者提供这些,因此设置必须在他们的端完成,而不是在 Moodle 中。屏幕顶部有一个服务提供商设置说明链接,用于六个受支持的突出 OAuth 2 提供商。
重要提示
建议对于预定义的服务提供商,保留所有字段在默认值,除了客户端 ID、客户端密钥和服务基本 URL。
如果您想设置未列出的服务提供商,您可以创建一个自定义服务。表单与预定义的服务相同,但没有预先填写任何值。您可以在docs.moodle.org/en/OAuth_2_services找到有关每个参数目的的详细信息。
一旦创建了服务(预定义或自定义),在编辑列中可用的标准操作,以及两个需要更多解释的额外操作:
-
authorization_endpoint、token_endpoint和userinfo_endpoint。 -
userinfo_endpoint应映射到 Moodle 用户字段。建议至少配置firstname、lastname和email,因为这些是 Moodle 用户资料中的必填字段。
一旦服务提供商配置正确,它就可以通过 OAuth 2 认证插件使用,该插件必须在网站管理 | 插件 | 认证 | 管理认证处启用。像所有其他认证插件一样,OAuth 2 允许您配置任何锁定字段,并且没有额外的配置选项,因为服务提供商的设置控制了所有行为。
就像其他认证方法一样,让我们用一个清单来结束本节,希望它在您配置 OAuth 2 认证时有所帮助:

图 5.40 – OAuth 2 认证清单
我们现在已经涵盖了所有随 Moodle 一起提供的认证机制,这些机制属于我们认证插件分组的第一个三个支柱。第四个类别包括系统认证方法,这是我们接下来要讨论的内容。
系统认证方法
Moodle 包含一些认证方法,这些方法是某些功能正常工作所必需的:
-
无登录:此插件没有设置,无法禁用或卸载。它的唯一目的是暂停用户登录到你的 Moodle 系统,这通过在用户的个人资料中选择选择认证方法下拉列表中的认证方法来实现。
-
无认证:当此方法启用时,用户可以创建无需任何认证或基于电子邮件的确认的账户。强烈建议你不要使用此方法,因为它会创建一个非常不安全的 Moodle 站点,并且仅应用于测试或开发目的。只能以与前面描述相同的方式锁定用户字段。
-
MNet 认证:Moodle 网络允许以对等或中心式连接多个 Moodle 站点。详见第十九章,设置 Moodle 网络,获取详细信息。
-
LTI:此插件的唯一目的是促进 LTI 生产者的登录。LTI 将在第九章,配置教育功能中讨论。
-
Web 服务认证:此插件通过外部客户端与 Moodle 通过 Web 服务进行通信来认证用户(详见第十八章,使用 Web 服务集成外部系统,获取详细信息)。认证插件没有设置。
这就结束了关于用户认证的部分。虽然内容很多,但你很可能只需要关于手动账户以及你在组织中使用的认证方法的信息。由于没有两个认证设置是相同的,你很快就会熟悉你认证基础设施的所有怪癖和特性以及连接它的插件。
最后一条建议:与你的系统、数据库和网络管理员保持良好关系。他们将授予你访问 LDAP 目录或组织认证数据库系统的权限,并为你打开连接到服务提供商和 Web 服务的端口。给他们买杯咖啡或者用其他小恩小惠来贿赂他们吧!
摘要
呼吁!这一章的内容很多。
本章的第一部分展示了 Moodle 提供管理用户的不同方式。我们首先查看每个用户账户存储的信息以及如何扩展他们的个人资料。然后我们执行了几个标准的手动和批量用户操作,最后处理了群体。
在第二部分,我们讨论了不同类型的用户认证,即内部、外部、服务提供商(通过 OAuth 2)和系统。由于认证方法的多样性和复杂性,我们详细介绍了比其他插件更突出的插件。
认证已经成为一个复杂的话题,我们只简要介绍了 Moodle 核心支持的方法。其他方法,如 Microsoft Azure AD 或 Open ID,以及如双因素认证、一次性密码和用户密钥认证等机制,超出了本章的范围,并且通过moodle.org/plugins/?q=type:auth上的插件来提供支持。
我们完全没有提到的一个认证方面是SAML_internal,以及通过SAML_external的客户和合作伙伴。为此提供了两种实现方式:
-
在系统级别复制认证插件并相应地修改源代码。程序员必须执行此任务,因为复制的模块需要源代码更改。注意这种方法,因为当 Moodle 更新到新版本时,这可能不起作用。
-
考虑 Moodle 的大哥,Moodle Workplace,它支持多租户认证。为了了解这是如何工作的,请查看docs.moodle.org/en/Multi-tenancy_authentication。在撰写本文时,以下认证方法支持多租户:手动、基于电子邮件的自注册、OAuth 2 和 SAML 2(作为第三方插件)。
下一步是授予用户角色,即他们被允许做什么以及不被允许做什么的权利。这将在下一章中讨论。
第六章:管理权限、角色和能力
权限复杂而强大,可以看作是 Moodle 的骨架。在本章中,我们将涵盖上下文、角色和能力,这些定义了用户在 Moodle 系统中可以和不可以看到以及执行的操作。
在本章中,我们将涵盖以下主题:
-
探索 Moodle 的预定义角色
-
理解上下文
-
将角色分配给用户
-
理解能力
-
角色和上下文管理
我们将从一个简短的定义开始,这个定义在管理权限时应该牢记在心。
重要提示
角色是一组具有相应权限和风险的能力集合。角色被分配给上下文中的用户。
在我们详细介绍所有与权限相关的主题之前,让我们先看看以下高级图表,它可视化了我们之前的定义:

图 6.1 – 高级权限概述
在您的 Moodle 系统中,每个用户都被分配了一个或多个角色,一个角色包含许多能力以及相关的权限和风险。每个角色分配都在特定的上下文中进行,代表一个层次结构组织起来的封闭区域。
我们将首先探索 Moodle 的标准角色,然后再涵盖稍微抽象的上下文概念。当我们在不同上下文中分配角色时,它将变得更加实用。接下来,我们将查看角色的结构和修改方式,然后创建我们自己的角色。我们将以角色管理和一些最佳实践建议结束本章。
到本章结束时,您将理解 Moodle 权限系统的核心概念,该系统包括角色、上下文、能力及其管理。
探索 Moodle 的预定义角色
Moodle 随附了几个预定义的角色。这些标准角色适用于大多数教育设置,但某些机构需要修改角色系统以定制 Moodle 以满足其特定需求。
每个角色都有执行几个操作的能力。例如,管理员和课程创建者可以创建新课程,而其他所有角色都被拒绝这项权利。同样,教师可以管理论坛,而学生只能对其做出贡献。
每个标准角色的描述以及内部和操作中使用的简称,例如用户批量上传,列在以下表格中(来自 网站管理 | 用户 | 权限 | 定义角色):

图 6.2 – Moodle 的预定义角色
Moodle Workplace 为其面向商业的受众提供了各种额外角色,例如租户管理员、认证经理、动态规则经理、组织结构经理、项目经理和报告构建器经理。
在我们可以对角色进行任何操作之前,我们需要理解上下文的概念,这将在下一部分进行讨论。
理解上下文
一个角色(记住,一组具有相应权限的能力)可以在不同的上下文中分配。那么,什么是上下文呢?
重要提示
上下文是 Moodle 中可以分配给用户的区域。
用户在任何给定的上下文都有一个角色。
一个上下文可以是一个课程、一个类别、一个活动、一个用户、一个块,或者是 Moodle 本身。Moodle 自带七个上下文,每个上下文都有特定的范围:
-
系统:Moodle 本身 – 即整个系统,也称为核心或全局上下文
-
课程类别:一个类别及其子类别
-
课程:一个单独的课程
-
活动模块:一个课程活动或资源
-
块:一个侧边栏块
-
用户:一个用户账户
-
站点(首页):主页和可以访问课程外的文件(通常称为首页上下文)
重要提示
每个上下文都有一个范围。范围是在其中可以执行特定操作的封闭区域或边界
这种布局可以比作一座多层楼和多个房间的建筑。楼层管理员对同一层的每个房间都有一定的权利和责任,但这些权利不适用于该财产其他楼层的房间。
角色分配必须在正确的上下文级别进行,以实现这样的结构。例如,教师角色应在课程上下文级别分配,特定论坛的调解员应在活动上下文级别分配,管理员应在系统上下文级别分配,依此类推。虽然从技术上讲可以在任何上下文中分配任何角色,但某些角色并不合理。不幸的是,Moodle 不会警告你这一点,因为它无法区分有意和无意分配。
上下文是分层的;也就是说,权限是从高上下文继承到低上下文的。高上下文中的权利更一般,而低上下文中的权利更具体。这一点也适用于我们的建筑类比 – 建筑级别的管理员在楼层或房间级别会有相同的权利,而反之则不然。
下面的图表显示了 Moodle 中存在的上下文以及它们如何按层次排列:

图 6.3 – Moodle 上下文层次结构
系统上下文是层次结构的根节点;在此上下文中分配的每个角色都将应用于其下任何其他上下文。下一级的课程类别上下文充当课程上下文的父节点。如果创建了子类别和子子类别等,相应的上下文将存在。您可以在最低级别看到模块和块上下文。与课程上下文一样,站点上下文有一个模块和块子上下文。站点指的是主页,通常被称为首页上下文,出于历史原因。在内部,站点被视为一个课程(课程 ID 为 1)。用户上下文是一个独立的实体,在层次结构中没有子节点。
例如,Jim 是某门课程中的教师。他在相关上下文中(他教授的班级)被分配了教师角色,并且在整个课程中都将保持这个角色,包括块和活动模块(活动和资源)。然而,如果 Jim 在课程类别上下文中被分配了教师角色,他将在该类别及其所有子类别中的所有课程中拥有相同的权利。Jim 将收到所有课程中所有作业的电子邮件,即使他不是这些课程的教师。不仅如此,他还将成为该类别中所有未来创建的课程中的教师!
将上下文分层组织具有几个优势,这些优势对于那些了解面向对象技术的人来说听起来很熟悉:
-
继承:在一级设置的权限和权限将传递到较低级别,这简化了维护工作
-
覆盖:可以在较低级别更改权限和权限
-
可扩展性:在 Moodle 的未来版本中,如果需要,可以添加新的上下文,而无需更改系统中现有的任何角色
现在我们已经了解了角色的样子以及 Moodle 附带哪些角色,是时候分配一些角色了。
为用户分配角色
角色分配的过程对每个上下文都是相似的。不同的是每个上下文的位置及其访问方法。在概述如何在各个上下文中分配角色之前,我们将首先描述为用户分配角色的过程:
- 导航到任何分配角色屏幕以获取所需上下文 - 例如,在下拉菜单的权限部分中的主页 | 参与者 | 分配的角色。在我们的系统中,您可以看到已分配了2名教师和18名学生(只能显示最多 10 个名字):

图 6.4 – 为用户分配角色
-
通过单击角色名称来选择您希望分配给用户的角色。如果有超过 10 个分配者,请单击超过 10 个链接。您将在 Moodle 中看到图 6.4所示的屏幕,无论何时您想要分配用户到角色(除了在课程中,那里已经开发了一个不同的模态界面)。
-
通过从潜在用户列表中选择用户名称并使用添加按钮将他们移动到相应的类别来分配角色给用户。
-
按住Shift键以选择一系列用户,并按住Ctrl键(在 macOS 上为Command键)以选择多个用户。
-
要撤销用户的角色分配,从现有用户列表中选择人员,并通过点击移除按钮将他们移回潜在用户组。
重要提示
一旦用户被分配了角色,权限将立即授予。无需保存任何更改。
如果您的潜在用户列表包含超过 100 个条目,则不会显示用户名,您将不得不使用搜索框来过滤账户列表(您可以通过在网站管理 | 用户 | 权限 | 用户选项中的maxusersperpage设置更改此值)。Moodle 使用实时搜索;一旦您开始输入,用户列表就会立即更新。在左边的搜索框下方有三个自解释的搜索选项。如果该区域已折叠,您可能需要将其展开:
-
即使所选用户不再匹配 搜索
-
如果只有一个用户匹配搜索,则自动选择 他们
-
在用户的名称中任何位置匹配搜索文本
您可以通过底部的下拉菜单切换到当前上下文中另一个角色的分配。
重要提示
在错误上下文中分配角色是常见的问题来源。强烈建议您定期检查当前上下文,以确保没有授予未预期的权限。换句话说,彻底测试您的角色分配。
到目前为止,我们已经处理了上下文的一般概念,并查看如何在上下文中分配用户角色。现在,我们将处理每个上下文,按照我们的 Moodle 上下文层次结构。让我们从顶部的系统上下文开始。
系统上下文
系统上下文涵盖了整个 Moodle 系统。分配从网站管理 | 用户 | 权限 | 分配系统角色进行。在我们的系统中,只有两个可以分配的角色。我们已经提到,在某些上下文中分配某些角色是没有意义的。在角色内部,可以指定在哪些上下文中可以分配角色。只有管理员和课程创建者角色被选中,这也是选择有限的原因:

图 6.5 – 系统上下文
您将看到一个熟悉的屏幕,允许您为用户分配角色。与前面概述的通用屏幕唯一的区别是警告,我只能重复一遍:您从该页面分配的任何角色将应用于整个系统中的指定用户,包括首页和所有 课程。
在大多数具有预定义角色的 Moodle 系统中,如果您希望允许用户对所有课程进行只读访问,例如检查员、业务经理或学校校长,则只有分配管理员角色才有意义。将课程创建者角色分配给用户允许您在任何类别中创建新课程。例如,如果在系统上下文中分配了教师角色,则用户将被允许访问网站上每个课程以及未来创建的所有课程!
有时全球角色是合理的场景,例如在非常小的组织或 Moodle 仅托管所有用户都参加的少量课程时。此外,一些新的用户定义角色,如学校检查员,被设计为在全局级别分配。
只能在系统级别分配的一个角色是管理员角色。这项任务在网站管理 | 用户 | 权限 | 网站管理员下有一个专门的区域。在安装 Moodle 时创建了一个主要管理员,无法修改或删除。但是,您可以创建额外的管理员账户。此过程与在任何其他上下文中分配用户相同,除了您必须确认分配。此外,您可以将任何网站管理员设置为主要的网站管理员(通过设置主要 管理员按钮)。
重要注意事项
确保将 Moodle 管理员数量保持在最低!这种限制提高了系统的连贯性,增加了安全性,并避免了网站潜在的管理不当。
在上下文层次结构中向下移动一级,我们到达课程类别上下文,这是以下子节的主题。
课程类别上下文
课程类别上下文涵盖了类别及其子类别中的所有课程。角色分配发生在网站管理 | 课程 | 管理课程和类别下。您必须在相应的设置下拉菜单中选择权限,并从熟悉的下拉菜单中选择分配角色。相同的机制适用于子类别、子子类别等等。
在课程类别上下文中分配的典型角色是课程创建者角色。它允许指定用户在指定的类别内创建新课程,通常是部门或部门。标准的课程创建者角色不包括教师能力;也就是说,课程创建者不能编辑任何课程内容。在较小的组织中,可能需要授予教师角色访问类别内所有课程的权限。
向下移动一个级别,我们到达课程上下文。
课程上下文
如其名所示,课程中的所有角色分配都是在课程上下文中授予的。分配发生在实际的课程中,我们在第四章,“管理课程和注册”中已经遇到,当时我们讨论了注册。
重要注意事项
在课程上下文中,课程注册被视为角色。
由于注册包含一些独特的选项(开始日期、结束日期和暂停选项),并且因为这些注册通常由(非技术性)教学人员执行,因此已经实现了不同的用户界面。然而,在课程内,当您转到参与者|注册方法,然后点击手动注册方法编辑列中的注册用户图标时,您将看到一个看起来熟悉的屏幕。我们已经在讨论注册时覆盖了屏幕中央显示的附加过期选项:

图 6.6 – 课程上下文 I
当学生通过自我注册或任何其他注册机制注册课程时,Moodle 会自动在相关的课程上下文中分配学生角色。这也适用于您批量上传用户并指定用户必须注册的课程的情况。
如果您必须为未注册但已在课程中拥有角色的用户分配角色,请从参与者菜单中的下拉列表中选择其他用户,然后点击分配角色按钮。这适用于管理员角色,例如,或一个新创建的角色,如主管教师。您将看到未注册课程但已继承或分配角色的用户列表:

图 6.7 – 课程上下文 II
在上下文级别层次结构中缺失一个级别,它处理模块和块。
模块上下文
一旦您进入一门课程,就可以为个人模块分配用户角色——即资源和活动。当您选择一个模块时,在更多菜单中有一个权限链接,包含三个与角色相关的选项。本地分配的角色将引导您进入熟悉的分配角色屏幕。权限和检查权限允许您更改继承的角色并验证个别用户的角色。我们将在本章后面讨论这个问题:

图 6.8 – 模块上下文
教师经常在模块上下文中使用角色分配来授予或撤销学生的额外权利。一个经常引用的例子是论坛管理员。如果您希望让学生负责论坛以帮助他们学习如何管理讨论,他们需要编辑和删除帖子(以及其他)的权利。这些权利是教师角色的一部分,并且将教师角色分配给单个活动中的学生是完全可行的。只需确保他们不能评分任何考试!
默认情况下,具有教师角色的用户有权在模块上下文中分配角色。然而,由于角色系统的复杂性,通常由 Moodle 管理员代表他们执行此任务。同样适用于块上下文,将在下一节中介绍。
块上下文
块上下文允许在块级别分配权限,它位于课程的块抽屉内。您将在下拉菜单中看到在

图 6.9 – 块上下文
默认情况下,您的系统不包含一个在块上下文中被授予分配权限的角色;因此,链接将被隐藏。我们将在稍后处理修改角色的问题。
可以控制可以查看块的用戶。假设有一个不允许访客查看的块。要隐藏该块,访问moodle/block:view能力。或者,您可以从高级角色覆盖下拉列表中选择访客角色,并将提到的能力设置为阻止。我们将在本章稍后处理能力。
同样的机制也适用于整个系统中的块,无论是在仪表板、个人资料页面、课程中还是在活动内部。它也适用于主页上的块,这些块由首页上下文覆盖。
首页上下文
在 Moodle 中,主页由首页上下文覆盖。首页就像一门课程,同时又不完全像一门课程。换句话说,它是一门特殊的课程!这种独特性也是为什么首页上下文被称为站点****课程上下文的原因。
首页上下文以系统上下文为父上下文,类似于课程上下文,模块和块为子上下文。这个熟悉的界面可以通过参与者部分中的权限下拉菜单中的分配的角色链接访问。
在首页上下文中的典型用户是设计师,他们负责 Moodle 系统首页的布局和内容。当分配时,只有首页菜单及其子菜单是可访问的。大多数网站应用教师角色或创建一个专门的设计师角色。
用户上下文
用户上下文是一个独立的上下文,只有系统上下文作为其父上下文。它处理与课程外的所有用户相关的问题,包括用户的个人资料、学习计划、论坛帖子、博客条目、笔记、报告、日志和成绩。
角色是在用户的个人资料中分配的,您必须从管理面板中选择偏好设置。相对于此用户分配角色链接默认情况下不会出现!您需要拥有可以在用户上下文中分配的角色。没有任何预定义的角色适用于这种方式,这就是为什么这仅适用于用户定义的角色。一个常被引用的、在用户上下文中应用的自定义角色示例是家长/导师角色,我们将在本章后面的创建自定义角色部分处理它:

图 6.10 – 用户上下文
在用户上下文中分配的角色将只能访问从用户屏幕可访问的信息。他们将无法访问任何课程。
Moodle 还支持将角色分配给群体(站点管理 | 用户 | 权限 | 将用户角色分配给群体),这实际上在用户上下文中手动分配角色。这个功能在主管负责学习小组的设置中非常有用。
多个角色
用户被分配到多个角色是很常见的。例如,一个班级教师也被指定为负责的年级组的课程创建者(课程类别上下文),他们负责 Moodle 管理(站点),他们在不同的班级中担任支持教师(课程),或者他们是孩子的家长(用户)。每个登录用户都会自动在系统上下文中被分配认证用户角色。我们将在本章后面处理这个问题。
Moodle 的角色基础设施的一个重要部分是能够同时将多个角色分配给一个用户。在我们最初的建筑示例中,等效的是负责特定楼层水平的楼层经理,在假期期间临时负责一楼。
如前所述,必须选择实际上下文以指定一个额外的角色。然后,您将能够根据需要分配额外的角色。
问题在于潜在的冲突,Moodle 必须解决这些冲突。例如,如果一个角色可以删除论坛帖子,而另一个角色不能,但一个用户在同一个上下文中被分配了这两个角色,哪个权利适用?虽然 Moodle 内置了解决这些冲突的机制,但最好完全避免此类场景。
在同一个上下文中将两个或多个角色分配给同一个用户在技术上是有可能的。很难想象出这种设置会有意义的场景。
小贴士
内置权限解析机制的内部工作原理在docs.moodle.org/en/Override_permissions的权限冲突解决部分有很好的文档记录。
这就结束了关于角色分配的部分。角色由能力组成,我们将在下一部分处理。
理解能力
到目前为止,我们已经将现有角色分配给了不同 Moodle 上下文中的用户。在接下来的几页中,我们将深入了解一个角色,其中能力决定了允许和禁止的功能。记住,角色是一组具有相应权限的能力。一旦我们理解了能力,我们就可以修改现有角色并创建全新的角色。
角色定义
可以通过站点管理 | 用户 | 权限 | 定义角色访问现有角色。显示的屏幕是我们之前探索 Moodle 预定义角色时的屏幕。当你点击一个角色名称时,会显示其组成。你可能还记得图 6**.1中显示的角色元素。让我们放大角色,看看它的元素:

图 6.11 – 角色结构
每个角色包含一个唯一的短名称(用于批量操作)、一个自定义完整名称和一个可选的自定义描述。角色原型字段指定如果将角色重置为其默认值,将设置哪些权限。此设置进一步确定在 Moodle 未来版本中引入任何新权限时将具有哪些值。这些设置将在更新过程中应用。
此角色可能被分配的上下文类型字段设置为允许将角色作为选项的上下文。这种限制减少了在不应分配角色的上下文中分配角色的风险。当我们尝试在块或用户上下文中分配角色时,Moodle 阻止了我们这样做。
接下来的四个字段(允许角色分配、允许角色覆盖、允许角色切换和允许角色查看)显示当前角色被分配的用户可以分别分配、覆盖、切换和查看哪些角色。角色风险字段指示当前角色具有六个可用风险中的哪一个。一旦我们更详细地处理了角色,所有这些信息都将更有意义。
除了这些参数之外,每个角色还包含大量能力。Moodle 的角色系统目前大约有 450 个(!)个,Moodle Workplace 增加了 50 多个。如果你安装了插件,这个数字可能更高。
重要提示
能力是特定 Moodle 功能的允许动作。
每个能力代表一个合法的 Moodle 操作,并在所有能力的列表中以单行显示。为了简化对能力的搜索,请使用筛选选项,以便只显示与筛选标准匹配的能力(包括名称和描述):

图 6.12 – 能力
每个能力都有以下组件:
-
描述:例如,从文件上传新用户的描述提供了对能力的简短解释。点击能力将在单独的浏览器窗口中打开该能力的在线 Moodle 文档。
-
moodle/site:upload users遵循严格的命名约定,level/type:function,这标识了能力在整个角色系统中的位置。级别表示能力属于 Moodle 的哪个部分(例如moodle、mod、block、tool、enrol或wp)。类型是能力类,而功能标识了实际的操作。 -
权限:每个能力的权限必须具有以下表中解释的四个值之一:

图 6.13 – 权限
重要提示
主要来说,低层级的权限会覆盖高层级的权限。例外的是禁止,根据定义,在低级别无法覆盖。
- 风险:Moodle 显示与每个能力相关的风险 – 即每个能力可能引发的风险。它们可以是以下六种风险类型的任何组合:

图 6.14 – 风险
重要提示
风险仅显示;由于它们仅作为警告,因此无法更改这些设置。当点击风险图标时,风险文档页面将在单独的浏览器窗口中打开。
Moodle 的默认角色已考虑到以下能力风险而设计:
-
管理员:所有能力,除少数例外
-
教师:某些具有 XSS 和隐私风险的能力,主要是添加和更新内容
-
学生:某些具有垃圾邮件风险的能力
-
访客:只有无风险的能力
现在我们已经涵盖了角色的成分,让我们开始修改它们。
修改角色
要编辑角色,请点击查看角色详情屏幕顶部的编辑按钮或在主角色屏幕的编辑列中选择适当的图标:

图 6.15 – 角色操作
在编辑角色时,您可以更改标准字段及其权限。例如,一些学校将学生角色名称更改为小学生,而一些培训机构将教师更改为讲师。在 Moodle Workplace 中,这两个角色分别被重新标记为学习者和培训师。请注意,这仅更改了角色的名称,并没有更改 Moodle 中使用的相应标签。您将在第十章的管理本地化部分中学习如何做到这一点,配置 技术功能。
当您更改从moodle/user:viewdetails能力派生的角色的功能,并将其从允许更改为未设置。现在,未设置被选中,但允许值仍然突出显示;一旦应用,不要忘记保存您的角色更改:

图 6.16 – 角色操作
如果您不熟悉角色修改,建议首先复制一个角色(通过图 6.16顶部屏幕的导出功能以及创建以下部分中描述的新角色)然后进行编辑。保持默认角色不变,如果多个管理员在同一系统上工作或第三方提供支持,则维护会更加容易。
重要提示
无法通过 Moodle 界面修改管理员角色。
通过角色的覆盖机制,通常可以避免修改角色,我们将在下一节中介绍这一机制。
覆盖角色
在给定上下文中,可以覆盖角色的权限。想象一下上下文层次结构,其中角色定义发生在顶级。在较低级别,例如类别或课程,您现在希望修改该角色的权限。角色覆盖正是为此而设计的。
重要提示
覆盖是设计来更改特定上下文中的角色的权限,允许您根据需要调整权限。调整涉及授予额外权限或撤销现有权限。
使用与名称相同的熟悉下拉菜单中的权限链接,您可以查看当前上下文(在此处,模块上下文中的作业)的任何功能已被授予或继承了哪些角色权限:

图 6.17 – 覆盖角色 I
括号中显示的数字表示每个角色的覆盖次数。在具有权限的角色列中,您可以为每个功能(使用标准的删除图标)删除一个角色,或选择要添加到允许的角色列表中的角色(通过+符号)。同样适用于禁止列。
一旦您从mod:assign/grade)将其继承的未设置值更改为允许:

图 6.18 – 覆盖角色 II
任何对角色系统的更改都会在屏幕顶部突出显示,并显示时间戳。
覆盖也可以用于在该上下文中拒绝功能并从用户中移除权限。例如,在课程中具有学生角色的学习者通常允许在论坛中开始新的讨论,但有一个特定的论坛你想限制这种能力:你可以设置一个覆盖,防止学生在这个论坛中开始新的帖子(mod/forum:startdiscussion)。
到目前为止,我们已经了解了角色的组成,并学习了如何在上下文层次结构的不同级别中修改和覆盖功能。现在,是时候创建我们的第一个自定义角色了。
创建自定义角色
Moodle 允许你创建新的角色。在教育环境中,这些自定义角色的例子包括家长、教学助理、秘书、检查员和图书管理员;在商业环境中,则包括培训协调员、评估员、导师或员工经理。你可以通过访问网站管理 | 用户 | 权限 | 定义角色并使用添加新角色按钮来定义新角色。
在你到达熟悉的角色编辑屏幕之前,你有三个选项可以选择:
-
使用角色或原型:使用现有的角色或角色原型作为基础是创建新角色时常用的方法。这可以最大限度地减少所需的工作量并减少创建新角色时的错误。
-
使用角色预设:导入一个(以 XML 格式)已导出在你的 Moodle 实例或另一个系统中的角色(使用查看角色详细信息时的导出按钮)。
-
无选择:从头开始创建一个没有任何预设或继承原型的角色:

图 6.19 – 添加新角色
确保你指定此角色可能分配的上下文类型。如果你遗漏了某个上下文,将无法分配该角色。如果你允许不适合该角色的上下文,你可能会面临潜在问题的风险。
让我们看看一些你可能想要添加到你的 Moodle 系统中的示例角色。
示例角色
Moodle Docs 提供了几个可能与你的组织相关的示例角色(docs.moodle.org/en/Creating_custom_roles)。如果没有,它们为你创建其他角色提供了一个良好的起点。以下是一些有价值的示例:
-
日历编辑器:此角色允许用户将网站事件添加到日历中(更多详情,请参阅 docs.moodle.org/en/Calendar_editor_role)
-
演示教师:此角色用于为演示教师提供一个账户,该账户具有无法更改的密码和资料(docs.moodle.org/en/Demo_teacher_role)
-
论坛管理员:此角色用于特定论坛,允许用户编辑或删除论坛帖子、分割讨论并将讨论移动到其他论坛(docs.moodle.org/en/Forum_moderator_role)
-
学习计划查看器:此角色允许教师查看学生的学习计划(docs.moodle.org/en/Learning_plan_viewer)
-
问题创建者:此角色使学生能够创建用于测验的问题(docs.moodle.org/en/Question_creator_role)
-
问题分享者:此角色允许教师访问和分享在类别或网站级别的问题(docs.moodle.org/en/Question_creator_role)
列表中缺少的一个突出条目是臭名昭著的家长或导师角色,我们将在以下小节中逐步创建。
家长/导师角色
Moodle 中最受欢迎和最受欢迎的自定义角色之一是家长、监护人或导师的角色。其想法是授予用户查看某些个人资料信息的权限,例如活动报告、成绩、学习计划、博客条目和关于他们的孩子、受抚养人或指导者的论坛帖子。它还允许受托人代表某人同意政策(见第十四章,遵守数据保护法规)。此外,特别引入的受指导者块必须放置在首页上,以便分配了该角色的用户能够访问用户上下文。
要创建新角色,请按照以下步骤操作:
-
前往网站管理 | 用户 | 权限 | 定义角色。
-
点击添加新角色,继续到下一屏幕,并将其命名为家长或导师。提供适当的简称和自定义描述。
-
将角色原型类型设置为无,并选择上下文类型字段中的用户复选框,其中此角色可以分配。
-
将以下截图中的功能设置为允许:

图 6.20 – 修改后的家长角色功能
-
使用创建此角色按钮保存角色。
-
每个家长都需要一个单独的用户账户,该账户必须手动创建或批量创建。在我们的例子中,关爱和慈爱的父亲是Ozzy Harris,他的孩子是Kelly Harris和Jack Harris:

图 6.21 – 家长和子账户
-
每个家长都必须与每个孩子(再次,手动或批量)关联。要这样做,请按照以下步骤操作:
-
访问第一个孩子的个人资料页面,在管理面板中选择偏好设置链接,然后点击相对于此用户分配角色。
-
选择家长作为要分配的角色。
-
从潜在用户列表中选择父亲(Ozzy Harris),并将其添加到现有用户列表中。为所有孩子重复这些步骤。
-
如果一个导师有多个指导学员,你可以将他们添加到一个群体中,并自动分配角色(站点管理 | 用户 | 权限 | 将用户角色分配给群体)。虽然这种情况在家庭环境中不太可能发生,但在其他设置中,如监督中,可能会有所帮助。我们在之前处理用户环境时已经覆盖了此选项。
-
为了方便访问用户信息,引入了一个特殊的指导学员块:
-
前往您的首页并切换到编辑模式。
-
将指导学员块添加到块抽屉(它也可以添加到默认仪表板)中,并通过配置图标将其标题更改为家长访问。
-
以Ozzy Harris的身份登录;你应该会看到以下块:
-

图 6.22 – 指导学员块
当点击一个名字时,将显示相应的用户资料,包括发送到论坛的帖子、学习计划、博客条目和活动报告,包括日志和成绩。
父亲角色的创建不仅展示了其潜力,还展示了自定义角色的多功能性和复杂性。因此,你必须勤奋地测试新角色。
测试新角色
在创建新角色后,建议您创建一个测试账户,并在所有支持的环境中将其新角色分配给它。以管理员身份注销并作为新创建的用户登录以测试新角色,或使用登录为功能来伪装成测试用户。或者,使用不同的浏览器测试角色,而无需以管理员身份注销。
重要提示
在将新角色分配给任何用户之前,强烈建议彻底测试新角色。
如果你修改了一个预定义的角色,并希望将其回滚到出厂设置,请转到站点管理 | 用户 | 权限 | 定义角色,选择(不要编辑)一个角色,然后点击重置按钮。这将用内置功能中的值替换其现有值。
角色系统的复杂性和在多个环境中将多个角色分配给多个用户的能力,需要一种机制来验证权限设置的准确性。由于权限可以继承并在较低级别再次覆盖,这个问题变得更加严重。
Moodle 有一个内置的权限检查器,它显示检查器启动上下文中任何能力的值。您可以通过特定上下文中的检查权限链接访问此功能。例如,在以下截图中,我们在凯莉·哈里斯的用户上下文中调用了权限检查器,并显示了用户奥斯齐·哈里斯的权限(转到凯莉的个人资料,在管理块中跟随偏好设置链接,然后在角色块中选择检查权限链接。然后,选择奥斯齐并显示此用户的权限)。它确认了之前创建的家长角色的设置:

图 6.23 – 权限检查器
在站点级别,两种额外的机制有助于识别角色中可能出现的任何潜在问题。能力报告(站点管理 | 用户 | 权限 | 能力概述)显示,对于所选能力,它在一个或多个选定角色的定义中有什么权限。它还显示能力是否在任何地方被覆盖,这在您试图定位本地修改时非常有帮助。
在示例截图中,我选择了mod/assign:grade能力,选择了所有角色,并筛选结果以仅显示差异。以下报告显示了所有角色中的能力值。特别值得注意的是在分配上下文中的学生角色,其中它已被覆盖:

图 6.24 – 能力概述
第二个工具可以在站点管理 | 用户 | 权限 | 不支持的角色分配中找到。正如其名所示,它列出了在从先前版本的 Moodle 升级时可能出现的任何无效角色分配。如果列出了任何分配,您将必须手动修改或删除它们。
这结束了创建和测试新角色的本节。我们将以一些与角色相关的杂项功能结束本章,这些功能不适合之前的任何部分。
角色和上下文管理
我们现在已经处理了基本工具,这样我们就可以使用、修改和创建角色。Moodle 在广泛使用角色时提供了一些关键功能,我们将在本节中介绍。在分配默认角色之前,我们将处理角色分配和覆盖允许,然后我们将了解上下文冻结,并以最佳实践建议结束。
允许角色分配和覆盖
默认情况下,某些角色有权允许其他角色分配角色。例如,教师可以分配非编辑教师和学生角色,而管理员可以分配除了访客、认证用户和站点首页认证用户之外的所有角色(这些角色在用户首次登录时自动分配)。在某些情况下,您可能希望更改默认设置;例如,应该允许教师将角色分配给其他教师,或者当新创建的角色需要管理时。为了实现这一点,请通过导航到站点管理 | 用户 | 权限 | 定义角色选择允许角色分配选项卡:

图 6.25 – 允许角色分配
在前面的屏幕截图中,修改后的权限已被突出显示。教师可以分配教师角色,课程创建者和教师都可以分配新的家长角色。
对于角色覆盖、角色切换和角色查看也存在相同的机制。它们可以通过同一屏幕上的允许角色覆盖、允许角色切换和允许角色查看选项卡分别访问。
分配默认角色
在某些情况下,标准角色会自动分配。这些可以在站点管理 | 用户 | 权限下的用户策略部分进行指定:

图 6.26 – 默认角色分配
前面的屏幕截图显示了默认访客角色(未登录的用户)和访客角色的分配。
Moodle 自带一个预定义的角色,称为认证用户——即所有用户的默认角色。它分配给每个已登录的用户,除了其他任何角色。这个角色是为了授予用户访问某些功能而创建的,例如发布博客条目、管理个人日历条目、更改个人资料字段等,即使他们没有注册任何课程。
您可以进一步指定自动分配的角色(通过新课程创建者角色下拉列表)给那些创建了课程但尚未获得课程权限的用户。对于从备份中恢复课程的用户,也存在一个类似的设置,称为课程恢复者角色(见第十六章,避免失眠之夜 – Moodle 备份 和恢复)。
重要提示
更改用户策略设置可能会显著影响新用户在您的 Moodle 系统上可以执行的操作,因此在应用之前请务必检查默认角色!
除了 用户策略 部分的默认角色外,还可以指定默认主页角色,这可以通过前往 网站管理 | 常规 | 网站主页 | 网站主页设置 来设置。默认网站主页角色 字段可以设置为允许登录用户参与首页活动,通常是 学生 或 教师。也可以通过设置认证用户角色覆盖来允许登录用户参与这些活动。
接下来是环境冻结,它有效地将内容置于只读模式中。
环境冻结
环境冻结 允许管理员或具有相关能力的人将课程类别、块、课程或模块设置为 只读;也就是说,用户不能再修改或添加内容。
前往 网站管理 | 开发 | 实验 | 实验设置 并启用此功能以启用环境冻结。除非启用了 环境冻结适用于管理员 设置,否则管理员可以始终修改冻结内容:

图 6.27 – 环境冻结和解冻
一旦用户被授予 moodle/site:managecontextlocks 能力,他们就可以在课程、首页和分类上下文中使用环境冻结功能。例如,教师可以在课程结束后锁定课程,或者当讨论结束时关闭论坛。这种锁定也可以通过解冻选项来解除。
在撰写本文时,环境冻结是一个实验性功能,但预计很快将结束其试验阶段。
Moodle 角色分配 – 最佳实践
角色有时会在 Moodle 网站中引起问题,因此建议遵循有关角色的以下建议:
-
只有在你彻底理解了它们之后,才去触碰角色
-
永远不要授予用户超出其能力的角色
-
在可能的情况下,避免将多个预定义角色分配给用户
-
尽可能避免使用系统角色
-
避免创建过多的新角色
-
避免不合理的角色分配
-
跟踪角色分配,以确保未来的可维护性
-
不要更改预定义角色的权限
-
严格测试角色修改和新角色的应用
此列表也是本章的良好总结,因为它涉及了最常讨论的主题。
摘要
在本章中,你学习了角色是什么以及它们在不同上下文中的应用。我们介绍了在创建自定义角色(如家长、检查员和图书管理员)之前修改现有角色的方法。最后,我们探讨了管理与角色相关的行政设置,包括环境冻结。
理解角色的概念对于你想要为特定用户组添加、修改或删除功能至关重要。这样一个系统的复杂性和灵活性之间总是存在权衡。虽然你可以争论角色系统的用户友好性,但它无疑已被证明是 Moodle 中最强大的概念之一。
课程、用户和角色之间的相互关联至关重要。一旦这一设置和配置正确完成,您的 Moodle 在技术上就准备好起飞了。然而,在那之前,你可能首先想要改变它的外观和感觉。这正是下一章要讲述的内容。
第七章:提升 Moodle 的外观和感觉
您的系统现在已完全运行,用户、课程和角色已就位。现在是时候改变其外观和感觉,以创建更具吸引力的用户体验并确保符合您的企业品牌。
如以下图表所示,有许多构建块会影响您的 Moodle 系统的外观和感觉:

图 7.1 – Moodle 的外观和感觉组件
我们将 Moodle 的外观和感觉组件分为三个部分,这些部分也构成了本章的结构:
-
外观:这些是在管理设置中可以配置的修改。在我们处理不同的登录流程和如何调整页眉之前,您将学习如何更改关键页面的布局(主页、仪表板、我的课程和用户资料)。然后,我们将介绍一些影响整个网站外观和感觉的外观工具:块抽屉、Atto HTML 编辑器、视频和音频,最后是用户之旅。
-
主题:这些是需要 CSS 样式修改的修改。主要内容包括主题选择、主题类型和主题自定义。
-
可访问性:这些是需要符合与您相关的可访问性法规的修改。为了支持不同类型的可访问性问题用户,我们将为您提供工具以确保系统、主题和内容可访问性。
小贴士
主题创建在本书中没有涉及,因为这不仅是管理员的任务,还需要具备良好的 CSS 技能的设计师。由 Silvina Paola Hillar 编著的 Moodle 主题开发 是一本了解 Moodle 主题和设计基础的好书。
在本章中,我们将涵盖以下主要主题:
-
探索 Moodle 的外观和感觉元素
-
自定义 Moodle 的外观
-
Moodle 视频和音频
-
使用用户之旅创建教程
-
Moodle 主题
-
可访问性
到本章结束时,您将熟悉可以通过管理员界面自定义的 Moodle 视觉元素。在我们开始自定义网站的外观之前,让我们首先探索 Moodle 的外观和感觉元素。
探索 Moodle 的外观和感觉元素
Moodle 在布局、品牌和设备支持方面可以完全自定义。必须强调,改变外观和感觉的某些方面需要高级设计技能。虽然作为管理员,您可以进行一些调整,但在涉及到样式时,需要聘请专业的前端设计师,尤其是当涉及到样式时。
在介绍 Moodle 的外观和感觉的三个支柱之前,让我们探索一些关键视觉元素。并非总是明显哪些页面元素可以通过设置(外观)进行调整,哪些则需要样式(主题)。请看以下主页的截图:

图 7.2 – 示例主页(Boost 主题)
我们突出了一些选定的视觉元素,并用可以通过外观设置定制的功能进行了注释,以及可以通过主题调整的元素(用颜色调色板符号表示)。虽然这个列表远非完整,但它希望能给你一个各种元素驱动网站外观和感觉的想法。它也应该给你一个关于可以通过外观设置修改的元素以及需要主题更改的元素的想法。
简而言之,外观(例如主页设置和菜单配置)决定了用户将看到哪些内容。相比之下,主题负责设计方案或品牌,即页眉和页脚、颜色、字体、图标等。
既然你已经熟悉了 Moodle 的外观和感觉的一些关键元素,让我们开始通过自定义我们网站的外观来开始吧。
自定义 Moodle 的外观
我们将通过介绍 Moodle 系统的外观元素来开始对其自定义的定制。如章节引言概述所示,我们将这部分分为六个我们将定制的元素:登录、主页、我的课程、仪表板、用户资料和页眉。
自定义登录
有三条(半条)路径可以登录到 Moodle。这与 LMS 的外观和感觉有什么关系?选择的流程可能会影响主页的布局和设计,因为它可以在登录前后显示。
看看以下图表中显示的路径:

图 7.3 – Moodle 登录路径
在 <yoursite>/login/index.php。我们在 第五章 中讨论了各种登录机制,管理用户、小组和认证,当处理认证时,包括绕过 登录前 页面并强制显示 登录 页面的选项。
第二种登录选项是将 登录块 放入块抽屉中,有效地将专门的登录页面移动到主页内部。一旦认证成功,用户将被引导到起始页面。
备用登录 选项是从不同的网站登录到 Moodle,可能是你组织的首页,有效地避免了 Moodle 的内置登录屏幕。为了实现这一点,你必须在用户想要登录的远程页面上添加一些 HTML 代码:
<form class="loginform" name="login" method="post"
action="https://[yourmoodlesite]/login/index.php">
<p>Username <input size="10" name="username" /> </p>
<p>Password <input size="10" name="password"
type="password" /> </p>
<p><input name="Submit" value="Login"
type="submit" /></p>
</form>
表单将把凭证传递到你的 Moodle 系统中。你必须将 [yourmoodlesite] 的 URL 替换为你的 Moodle 实例的 URL;这个地址必须通过导航到 网站管理 | 插件 | 认证 | 管理认证 来输入到 备用登录 URL 字段中。
默认情况下,经过身份验证的用户登录后将看到仪表板屏幕。您可以在网站管理 | 外观 | 导航中更改起始页面,在那里您可以选择用户起始页面。选项有网站、仪表板(默认)、我的课程和用户偏好。如果选择后者,用户可以在用户个人资料的偏好设置中的起始页面设置中进行选择。
最好的登录路径取决于您现有的基础设施和个人偏好。无论您选择哪种选项,用户始终可以访问主页,我们将在下一步对其进行定制。
自定义主页
主页对所有用户都是相同的。嗯,它的结构是静态的,而内容则根据登录的用户而变化。例如,每个主页可能都包含一个显示用户所注册课程的区块,这不太可能对每个用户都相同。这个页面也被称为网站主页或,出于历史原因,称为首页。
正如我们刚才提到的,Moodle 的主页在用户登录之前显示,在认证发生后发生变化。登录前后页面的内容和布局可以自定义。看下面的截图。这是与前面截图相同的网站,但用户尚未登录:

图 7.4 – 登录前后示例主页
在这个特定的例子中,登录区块显示在区块抽屉中,课程类别显示在中央。一旦登录,登录区块将被隐藏,私有文件区块将被显示,语言选择器被用户个人资料菜单所取代,主菜单中还会出现两个更多项目。我相信您能发现更多差异!
要更改登录前后主页的外观,我们需要更改网站主页设置。
修改网站主页设置
要自定义主页,请在家页上选择设置或转到网站管理 | 通用 | 网站主页 | 网站主页设置:

图 7.5 – 主页设置
在网站主页设置页面上可用的以下参数:
-
完整网站名称:这是在主页和浏览器标题栏中显示的名称。通常是您组织的名称或您的 Moodle 系统名称。
-
网站的简称:这是您网站在各个地方使用的内部名称,例如,作为备份名称的一部分或当网站联网时。
-
网站主页摘要:此网站描述可以通过课程/网站摘要区块显示。如果允许,描述文本也会被谷歌搜索引擎爬虫抓取。
-
站点主页:当未登录时,Moodle 可以在主页的中心列显示最多五个元素:公告、课程列表、分类列表、组合列表(分类和课程)以及课程搜索框。元素的顺序与下拉菜单中选择的顺序相同。
-
登录时站点主页项:这与站点主页相同,但它在用户登录后使用。提供了一个第六项用于显示,即已选课程,在用户认证之前这没有任何意义。
-
最大分类深度:此设置指定在显示课程分类时显示的层次级别数量。如果你的分类层次深度超过三或四个,建议限制此设置。
-
最大课程数:此设置确定在主页上显示的课程数量。如果还有更多课程可用,将显示更多课程链接。
-
包含主题部分:如果选中,将在主页的中心列中显示一个额外的主题部分(就像课程中的主题块一样)。它可以包含 Moodle 中可用的任何资源或活动的混合。它通常用于提供有关站点的信息或显示图片或预告片视频。
-
公告数量:这包括显示的新闻条目数量。
-
每页显示的评论数:此设置决定了如果在前页使用时,评论块中显示的条目数量。
-
默认站点主页角色:如果登录用户需要被允许参与主页活动,应设置一个默认的前页角色。
Moodle 的主页被当作一个课程处理(内部上,它有课程ID=1)。因此,大多数可用的设置都与它们的课程对应设置相同:报告、题库、内容库、过滤器以及课程复用。对于参与者菜单项也是如此:主页有其自己的上下文,可以在其中创建组,并将角色分配给用户。这允许一个专门的用户设计和维护主页,而无需访问 Moodle 中的任何其他元素。由于主页被当作课程处理,通常一个教师角色就足够了。
Moodle 提供了一套很好的工具来自定义主页。有时,你可能想用自定义的前页来替换它,我们将在下一个小节中处理这个问题。
替换主页
要替换主页,Moodle 允许你添加一个自定义脚本。要实现这个功能,你需要在你的config.php文件中添加以下行:
$CFG->customfrontpageinclude="<dirroot>/local/<yourfrontpage>";
请记住,这将显示内容区域顶部<yourfrontpage> PHP 文件的输出,以及主页的任何元素。这样,你就可以兼得两者之优:Moodle 元素(禁用你不需要的)和你的自定义元素。
虽然用户无法修改主页本身,但其内容为每个用户进行了个性化设置,例如日历条目或私人文件。同样,我的课程页面也是如此,我们将在下一个小节中进行自定义。
自定义我的课程
如其名所示,我的课程标签通过在内容区域(页面中心)显示课程概览块来显示用户已注册的课程。在我的课程视图中,用户可以对课程进行星标和存档;他们还可以通过应用以下任何组合的过滤器来减少显示的已注册课程数量:
-
状态:全部、进行中、未来、过去、星标和存档
-
文本
-
排序:按课程名称排序和按 最后访问排序
-
详情:卡片、列表和摘要
以下截图显示了我在 Packt 演示系统上看到的我的课程页面:

图 7.6 – 我的课程视图
您可以通过导航到网站管理 | 插件 | 块 | 课程概览来指定外观设置和可用过滤器。显示类别设置会在课程名称下方显示课程类别名称。您可以进一步自定义可用布局和可用过滤器。指定自定义字段选项可以让您将您自己的项目添加到状态过滤器中,这是一种将用户体验与您组织教授的主题对齐的绝佳方式。

图 7.7 – 课程概览块设置
未来和过去状态可以通过网站管理 | 外观 | 导航中的两个宽限期设置进行调整:未来课程的宽限期和过去课程的宽限期。
课程可以(理想情况下应该)有一个课程图片。如果缺少可选图片,它将被图案化的课程卡片所替代。这些卡片中使用的颜色可以在网站管理 | 外观 | 课程 卡片颜色中指定:

图 7.8 – 课程卡片颜色
您可以使用标准颜色选择器选择十种颜色,这些颜色将以随机顺序应用于课程图片。
在网站管理 | 外观 | 课程中,一些设置允许您指定课程如何呈现给用户以及显示的课程详细程度:
-
课程联系人:显示在课程描述旁边的用户。教师是最常用的选择。
-
显示扩展课程名称:如果启用,将显示短名称和长名称;否则,只显示长名称。
-
每页课程数:这是一个阈值设置,用于在分类内显示课程时使用。如果一个分类中的课程数量超过指定数量,则将在页面顶部显示页面导航。此外,当使用组合列表时,只有当数量小于指定阈值时,才会显示课程名称。
-
课程图片文件限制:默认情况下,只能将一个文件附加到课程上;您可能需要增加此限制,尤其是如果您想将 PDF 添加到有效的课程图片文件扩展名列表中,例如,以附加课程大纲。
我的课程页面涉及用户已注册的课程。那么如何导航到用户未注册的课程和分类呢?我们将在下一个小节中探讨这个问题。
课程导航
在 Moodle 中看到的课程列表可能会让人感到不知所措,用户可能难以导航整个分类层次结构。用户可以看到课程和分类的例子包括课程块中的所有课程链接、在网站页面设置中选择分类列表或组合列表,或者在导航块中的课程列表。
在网站管理 | 外观 | 导航中的一些设置涉及课程和分类中显示的详细程度。请注意,这些主要适用于导航块和基于经典主题的一些导航功能:

图 7.9 – 课程导航设置
一旦完成课程选择——无论是通过我的课程还是通过导航——用户将进入一个课程,在那里可以配置两个外观和感觉元素。
在课程内部
课程是学习发生的地方,课程创建者负责其内容、结构和布局。您应该设置两个工具以确保内容创建者的愉快体验:
-
课程格式:课程格式决定了课程内容将以何种方式呈现给学习者;我们已经在第四章,管理和注册课程中讨论过它们。您可以在网站管理 | 插件 | 课程格式 | 管理课程格式中配置或禁用课程格式。还可以安装额外的课程格式,我们将在第八章,理解 Moodle 插件中介绍。流行的课程格式有瓷砖、折叠主题和设计师。
-
活动选择器:当在课程内编辑模式下,内容创建者希望添加活动或资源时,活动选择器会出现。您可以在站点管理 | 课程 | 活动选择器 | 活动选择器设置中确定应显示哪些选项卡。在这里,您还可以在活动选择器页脚中显示或隐藏 MoodleNet 的链接。可以通过站点管理 | 课程 | 活动选择器 | 推荐活动将流行的活动和资源添加到推荐选项卡。请注意,这些设置适用于系统中的所有(编辑)用户。
为了确保课程之间的一致性并简化课程创建,建议实施课程模板机制。提供此类课程骨架有两种方式:
-
通过板载工具创建课程模板:Moodle 没有提供专门的设施,但您可以使用几个不同的工具来模拟课程模板工作流程,即课程备份、课程恢复和课程上传。这三个操作已在第四章的批量管理课程部分中介绍,管理和注册课程。
-
通过第三方插件创建课程模板:有各种选项可用,Kickstart (moodle.org/plugins/format_kickstart)是我的首选。
管理员(或具有适当权限的用户)预定义了主页和我的课程。目的是这两个页面对所有用户都是静态且相同的。另一方面,仪表板和资料页已被设计为用户可以根据个人偏好进行调整。接下来,让我们看看仪表板。
定制仪表板
仪表板就像每个用户都可以定制的个人主页。出于历史原因,这个顶级页面有时被称为<YOURSITE>/my)。
重要提示
仪表板是每个用户都可以定制的个人页面。
那么,当用户有权限创建自己的仪表板时,管理员的作用是什么?你有两个主要的职责:
-
创建默认仪表板
-
设置和配置用户无法更改或删除的仪表板元素
用户登录后,可以通过向相应区域添加块和更改已默认添加的任何块来编辑仪表板。他们还可以重新定位某些元素。作为管理员,您可以指定这些默认块是什么以及它们的位置,并控制可以执行多少定制。当用户定制仪表板时,他们可以将相应的页面重置到这些默认设置。
默认情况下,仪表板显示三个区块:时间线、日历和最近访问的项目。默认的仪表板页面可以通过导航到网站管理 | 外观 | 默认仪表板页面找到,在那里您必须切换到编辑模式。您放置在默认页面上的任何区块都将出现在用户的页面上。使用标准的移动处理程序,您可以在页面上自由放置区块;允许的位置(左、中、右)取决于活动主题——关于区块处理的更多内容将在稍后介绍。
可能存在您希望在每一页上显示的区块,这实际上使它们成为强制性的区块,不能修改或删除。为了方便这些粘性区块,请转到区块配置并更改选择页面设置,从此特定页面更改为任何匹配上述条件的页面。该区块将出现在所有子页面上,即所有用户仪表板,并且不能被删除,从而使其成为粘性区块。
一个有影响的功能是为所有用户重置仪表板。正如其名所示,您系统中的所有用户仪表板都将重置为默认布局。如果您已更改默认仪表板并希望将其推送给所有用户,此操作非常有用。
要防止用户编辑他们的仪表板,请调整认证用户角色中的moodle/my:manageblocks功能。要完全禁用仪表板,请取消选中网站管理 | 外观 | 导航中的启用仪表板参数。要防止访客访问仪表板,您必须取消选中允许访客访问****仪表板参数。
用户可以修改的第二页是个人资料页面,其自定义方式与仪表板类似。让我们在以下小节中看看它。
自定义用户个人资料页面
用户个人资料页面提供了有关用户的信息。我们在查看用户个人资料详细信息时已经遇到了这个视图,见第五章,管理用户、群体和身份验证。
要更改个人资料页面布局,请转到网站管理 | 外观 | 默认个人资料页面并开启编辑模式。默认情况下,此页面为空,您可以决定要添加哪些区块(如果有的话)。
用户个人资料页面(用户详细信息、课程详细信息等)上显示的信息不能更改。这些伪区块是硬编码的,不能像标准区块那样修改。
有三个功能会影响用户个人资料的自定义程度。以下是在认证用户角色中显示的以下过滤功能列表中的自解释值:

图 7.10 – 用户个人资料功能
我们现在已经涵盖了 Moodle 中的主要非课程页面:主页、我的课程、仪表板和用户个人资料。以下表格从用户的角度提供了一个快速总结:

图 7.11 – 首页 vs 仪表板 vs 我的课程 vs 用户资料
缺少一个关键布局元素:标题。
自定义标题
Moodle 标题显示在 Moodle 的每一页上,并包含不同的导航元素,如下所示注解的工具栏:

图 7.12 – Moodle 标题
不同的标题项包括以下内容(从左到右),包括更改它们外观的提示:
-
(紧凑)您的网站标志(在网站管理 | 外观 | 标志中),您还可以指定网站图标。如果没有提供标志,则显示网站名称(在网站管理 | 一般 | 网站首页 | 网站首页设置中网站首页设置)。
-
主要菜单项(当在网站管理 | 外观 | 导航中禁用时,仪表板将隐藏)。
-
管理菜单(只有网站管理员能看到此菜单)。
-
自定义菜单(可以通过
<Indent><Text>[|<URL>][|<Tooltip>][|<Language>]添加附加菜单项)。
<缩进> 是一系列短横线:没有短横线表示顶级菜单;一个短横线表示子菜单;两个短横线表示子子菜单;依此类推。Boost 主题不支持子菜单;其他主题可能克服这一限制。《文本》是菜单项的标签,《URL》是内部或外部链接,《提示》是可选的气球帮助。您可以将《语言》代码或作为最后一项的分离代码列表添加,如果用户当前已选择列出的语言,则将仅显示。### 创建分隔符。
- 以下示例自定义菜单项条目将生成 Moodle 标题图像中显示的菜单:
自定义 1
- 级别 1.1|URL
- 级别 1.2|URL
-###
- 级别 1.3|URL
自定义 2
- 语言 2.1|URL EN||en, en_us
- Sprache 2.1|URL DE||de, de_du, de_kids
- 级别 2.2|URL|在 Boost 中显示 in Boost
-- 级别 2.2.1|URL|在 Boost 中不显示 in Boost
-- 级别 2.2.2|URL|在 Boost 中不显示 in Boost
-
搜索框(在网站管理 | 一般 | 高级功能中启用全局搜索)。
-
通知指示器和通知菜单切换(始终显示)。
-
消息指示器和消息切换抽屉(始终显示)。
-
工作空间启动器(仅适用于 Moodle Workplace)。
-
个人资料菜单(可以通过
<Item><URL>隐藏菜单项)。
<Item> 是文本输入(在我们的示例中,<langstringname><componentname>。前者是语言包条目,后者是 Moodle 组件的名称,例如,提供直接链接编辑用户资料:editmyprofile,core|/user/edit.php)。
-
语言选择器(在网站管理 | 一般 | 语言 | 语言设置中显示语言菜单和语言菜单上的语言)。
-
编辑模式切换。
这就完成了外观页面和页眉的定制。接下来是整个系统中出现的视觉元素,首先是块。
配置块
我们迄今为止遇到的每个页面都包含块。实际上,除了少数例外,Moodle 中的每个页面都可以包含块。您必须切换到编辑模式并打开块抽屉来配置块。一旦开启,您将看到添加块项,这允许您将所有可用的块添加到主页上(除了已经添加的块,并且只允许一个实例):

图 7.13 – 向块抽屉添加块
每个块都有一个目的,通常与特定的 Moodle 功能相关联,例如在日历中显示截止日期、获取对用户私有文件的访问权限,或显示最新的公告。一个例外是文本块,它允许您添加任何 HTML 代码,对于无法使用标准 Moodle 块显示的内容非常有用。
在整本书中,我们会在相关主题时处理特定的块。在这里,我们专注于块配置。
块最多有三种类型的设置,可以通过配置图标访问:
-
块设置:这些设置是针对块的,并非所有块都提供配置参数。例如,我们在上一章创建“家长”角色时使用的“学员”块允许您指定块标题。
-
此块出现的位置:块将显示的位置以及默认属性。
-
在此页面上:当前环境中的属性。
下面的截图显示了块配置的示例(“学员”块):

图 7.14 – 块配置
以下参数可用:
-
原始块位置:这显示了块被创建的环境(此处为网站主页)。与角色一样,页面可能从父上下文继承块。
-
页面上下文(并非所有上下文都可用):此设置确定块将在哪些页面上显示;可用的选项是显而易见的:仅在网站主页上显示、在网站主页和添加到网站主页的任何页面上显示,以及在整个网站上显示。在其他上下文中,例如课程,根据原始块位置和您的当前位置,还有其他(上下文相关)选项可用。
-
页面类型上的显示(主页上不可用):可用的选项取决于块的环境。在课程环境中的示例有任何页面、任何课程页面和任何类型的课程****主页。
-
默认区域:这决定了块的位置,可用的选项取决于它们在主题中的定义。通常,选项是左侧(或侧边栏前)、内容和右侧(或侧边栏后)。
-
默认重量(-10 至 10):将块想象成一个气球 – 块的重量越轻,其位置越高,重量越重,则放置得越低。
-
可见(是或否):这决定了块是显示还是隐藏。
-
区域(左侧或右侧):这与默认区域相同。在允许在中心列中定位块的页面,例如仪表板和用户个人资料页面,内容被提供为第三个选项。
-
重量(-10 至 10):这与默认重量的原理相同。
块的重量和区域的概念已在以下(块)图中说明:

图 7.15 – Moodle 块的重量和区域
虽然教师有权在其课程内配置块,但由于重量和区域的概念并不直观,这通常需要一些支持。
接下来介绍的编辑器是用户将在整个网站上使用的另一个视觉元素。
Moodle 编辑器
在 Moodle 中,编辑器是用户体验的核心,因为它在整个网站上用于广泛的操作。这些包括在论坛中发布(学习者)、对提交提供反馈(教师)以及编辑内容(编辑教师)。作为管理员,您应确保编辑器配置得当,以满足用户的需求。
Moodle 的默认编辑器称为Atto,这是 Moodle 为 Moodle 开发的。Atto 被设计为与响应式主题一起工作,支持从左到右以及从右到左的字符串,提供无障碍支持,并且完全可配置。
TinyMCE曾是 Moodle 的标准编辑器,尽管仍然得到支持,但使用的是过时的版本。Moodle HQ 已经传达了以下文本编辑器策略:TinyMCE 的最新版本将被纳入 Moodle,并且所有 Atto 插件都将迁移。一旦这个过程完成,预计 Atto 将在未来的版本中逐步淘汰。因此,在这本书中,我们只会介绍 Atto,因为这是目前最好的 Moodle 编辑器;不久,您将处理 TinyMCE,所有基本功能都预计将可用,并且希望有更多功能。
此外,Moodle 包含一个内置的纯文本编辑器,用于输入不需要格式化的任何文本,例如源代码。
要访问可用的编辑器和它们的设置,请转到网站管理 | 插件 | 文本编辑器 | 管理编辑器:

图 7.16 – 管理文本编辑器
文本编辑器 插件区域的想法是可以在 Moodle 中安装和利用额外的编辑器(参考 第八章,理解 Moodle 插件)。这些可以是默认编辑器的替代品,或者可以输入特定内容的编辑器。此外,Atto 中的每个按钮都实现为一个 Moodle 子插件,这允许灵活扩展编辑器功能。
小贴士
建议您使用 Atto 作为默认编辑器,因为这是未来将得到维护的编辑器,并且完全支持移动设备。
您可以通过 设置 链接启用/禁用每个编辑器,更改顺序(它们在选择编辑器时将按此顺序显示),并调整编辑器的设置。
默认情况下,编辑器工具栏配置为如下所示(当展开时):

图 7.17 – Atto 编辑器工具栏(默认)
工具栏可以在 Atto 插件列表下的 工具栏配置 设置中进行配置:

图 7.18 – Atto 工具栏配置
工具栏按钮按组组织,例如,collapse、style1 和 list。组名必须是唯一的,并且顺序决定了按钮组排列的顺序。每个条目的格式如下:
group = button1[, button2][,button3][…]
例如,color 组包含两个按钮:前景 和 背景。
当您导航到 站点管理 | 插件 | 文本编辑器 | Atto HTML 编辑器 | 折叠工具栏设置 时,您可以通过 显示折叠时第一个组 选项指定在编辑器工具栏未展开时显示哪些按钮。
您可以安装 Atto 的编辑器插件,为您的编辑器添加额外的按钮。例如,单词计数器、行内纠正和 MS Word 导入。
Atto 在预定义的时间间隔自动保存其内容,这对于用户意外关闭页面很有帮助,因为内容将在他们下次返回同一表单时恢复。您可以通过导航到 站点管理 | 插件 | 文本编辑器 | Atto 工具栏设置 来调整此 自动保存频率 设置。请注意,非常高的频率,如每秒一次,可能会损害您系统的性能。
存在着许多选项可以扩展 Atto 的功能,而无需安装任何附加组件:
-
扩展表格功能:Atto 包含一个强大的表格模式,支持表格的格式化和自定义。为了使您的用户具备完整的功能,您可能需要通过访问 站点管理 | 插件 | 文本编辑器 | Atto HTML 编辑器 | 表格设置 来开启可用的功能。
-
支持数学方程式:如果您的某些用户经常使用数学方程式,您有两个选择。第一个是通过 TeX 的方程式,这是一种支持广泛数学运算的排版语言。第二个是通过 MathJax 的方程式;MathJax 是一个 JavaScript 库,它使用各种标记(包括 TeX)在网页浏览器中显示数学符号。您需要在网站管理 | 插件 | 过滤器 | 管理过滤器中启用过滤器。一旦您激活了一个或两个过滤器,您可以通过导航到网站管理 | 插件 | 文本编辑器 | Atto HTML 编辑器 | 方程式 编辑器设置来指定它们的详细信息。
-
带来一丝微笑 😉:无论您是否喜欢,表情符号已经成为了常态,教育环境也不例外。要配置或添加表情符号,请前往网站管理 | 外观 | HTML 设置,在那里您将找到表情符号值的列表,以及表格底部的良好解释。确保在网站管理 | 一般 | 高级功能中启用了表情符号选择器设置。
-
添加一些酷炫功能:FontAwesome是一个包含超过 2,000 个完全可缩放矢量图标的字体图标工具包。为了支持这一系列出色的功能,您需要从moodle.org/plugins/filter_fontawesome安装Font Awesome Icon Filter插件。有关如何操作的说明,请参阅第八章,理解 Moodle 插件。或者,您也可以通过 Mustache 模板添加FontAwesome。一旦您在网站管理 | 插件 | 过滤器 | 管理过滤器中激活了过滤器,您的用户就可以通过类似这样的文本输入添加图标:

图 7.19 – 过滤器 FontAwesome
在 Moodle 中,每当需要输入内容时都会使用 Atto。到目前为止,我们主要关注文本内容,而忽略了多媒体;在接下来的章节中,当我们处理视频和音频时,这种情况将会改变。
启用 Moodle 视频和音频
视频和音频内容对于构建引人入胜的学习体验至关重要。Moodle 支持播放各种媒体格式,以及音频和视频的录制。
我们将涵盖两种模式:首先,我们将查看媒体播放器,然后再处理媒体录制器。
媒体播放器
现在的用户期望将媒体格式融入他们的教学和学习内容中。无论是教师提供视频作为学习资源,还是学习者将音频剪辑嵌入到他们的作业中,不同媒体格式的支持都是理所当然的。作为 Moodle 管理员,您的任务是确保这些媒体文件能够正确播放。
那么,Moodle 是如何处理不同格式的媒体内容的呢?简单来说,每次 Moodle 检测到一个指向多媒体资源或<video>和<audio>HTML 标签的链接时,它都会用适当的媒体播放器代码替换它们。多媒体过滤器用于简化这一转换过程(更多关于过滤器的内容请参阅第十章,配置技术功能),如下面的可视化所示:

图 7.20 – 多媒体过滤器在工作
Moodle 在播放媒体格式方面做得相当不错,大多数设置几乎不需要调整。您可以在网站管理 | 插件 | 媒体播放器 | 管理 媒体播放器中查看支持的播放器:

图 7.21 – 媒体播放器
默认情况下,Moodle 使用VideoJS,这是一个流行的开源播放器,支持 HTML5 视频、音频和流媒体服务,如 YouTube 和 Vimeo。VideoJS 还向有访问障碍的用户提供内容。由于其可插拔性和易于定制的样式,它已成为网络应用的默认标准。除非您的用户有特定的媒体格式要求,否则 VideoJS 足以播放所有内容。
为了确保您的网站上可以播放媒体,您应该执行以下几项检查:
-
确保在网站管理 | 插件 | 过滤器 | 管理 过滤器中启用多媒体过滤器。
-
仔细检查VideoJS 设置。在视频文件扩展名和音频文件扩展名中,您可以指定哪些文件格式受支持。虽然有一个专门的 YouTube 媒体播放器,但 VideoJS 也支持YouTube 视频。如果您的用户不使用播放列表,您可以禁用独立播放器。视频 CSS 类和音频 CSS 类允许您自定义播放器。查看docs.videojs.com上可用的类。限制大小选项定义了在没有指定尺寸或视频拉伸到最大可能宽度时是否应用默认宽度和默认高度。
-
如果使用流媒体服务,请在可用播放器列表中启用 Vimeo 支持。
有多种方法可以通过视频相关的第三方插件来丰富您的网站。一个高度推荐的选择是Video Time (moodle.org/plugins/mod_videotime)。Video Time 产品系列包含一系列插件,可以将视频集成到 Moodle 中。视频可以本地托管在 Moodle 中,也可以在外部或 YouTube 或Vimeo上托管。支持的功能包括简化视频嵌入、可调整和自定义的标签界面、活动完成、视频跟踪、恢复、交互式字幕等。
媒体录制器
在 Moodle 中,每个人都可以成为内容创建者。教师可以通过语音录制作业反馈,学生可能希望将录制视频添加到论坛帖子中。一些用户将使用他们的台式 PC 或 Mac;其他人可能希望使用他们的移动设备进行录制。
Moodle 完全支持通过其 Atto 文本编辑器进行媒体录制。内部使用RecordRTC,这是一个使用 WebRTC 进行音频和视频录制的开源 JavaScript 库。您可以在**网站管理 | 插件 | 文本编辑器 | Atto HTML 编辑器 | RecordRTC中配置其设置:

图 7.22 – 媒体播放器
这些选项值得一看,因为它们会影响服务器资源,包括带宽和磁盘使用:
-
atto/recordrtc:recordaudio和atto/recordrtc:recordvideo。 -
音频比特率和视频比特率:比特率越低,文件大小越小,反之亦然。录制音频的默认比特率(128000)应生成每分钟约 15 KB 的文件;录制视频的默认比特率(2500000)生成每分钟约 20 MB 的文件。
-
音频时间限制(秒)和视频时间限制(秒):音频和视频录制的默认时间限制为2 分钟。同样,最大录制长度越长,生成的文件就越大。
录制存储在$CFG->dataroot>/filedir的子目录中。您可能需要再次检查第二章中关于文件和上传限制的部分,探索 Moodle 系统。
重要提示
确保配置post_max_size和upload_max_filesize与您预期的最大录制大小一致。
这部分关于音频和视频的内容到此结束。接下来是用户导游,以帮助学习者和教师在第一次遇到页面或功能时熟悉它们。
使用用户导游创建演示
用户导游允许您创建简单的演示,突出关键区域,或通过屏幕上的逐步指南演示新功能。以下是我们将在本节中创建的示例迷你导游:

图 7.23 – 管理用户导游
导游由多个步骤组成,每个步骤都与一个目标相关联。目标是一个页面元素,它属于以下三种目标类型之一:
-
块:一个 Moodle 块,用于在其旁边显示步骤
-
选择器:在步骤显示的页面上的 CSS 选择器
-
页面中间:与页面上的任何元素都不相关的通用信息
每个导游步骤都有一个标题、一些内容和目标。每个目标都与一个块、一个 CSS 选择器或页面中心相关联。导游中的页面数量没有限制。用户导游的结构在以下图中显示:

图 7.24 – 用户旅游概述
我们的示例旅游包含三个步骤,其中第一个与外观菜单相关联,其目标类型为选择器。
理论就到这里吧;让我们创建您的第一个用户旅游。
创建旅游
要访问用户旅游功能,请转到网站管理 | 外观 | 用户旅游。Moodle 附带了一些用户旅游,您将看到它们列出来。让我们使用创建新的 旅游按钮来制作我们的第一个指南。

图 7.25 – 创建用户旅游
虽然名称和描述应该是自解释的,但其他设置需要一些解释:
- 在我们的“旅游之旅”旅游中,
/admin/tool/usertours/%。通配符也可以与任何 URL 片段一起使用,例如,%add=scorm%,用于解释设置 SCORM 活动的各个方面。
其他要匹配的有用的 URL 是/my/%(仪表板)、/course/view.php%(所有课程)、/course/view.php?id=x(ID 为x的课程)和/user/profile.php%(用户资料)。要匹配主页,必须使用FRONTPAGE值。
-
旅游已启用:最初,旅游是禁用的。您可以为同一页面目的地拥有多个旅游,但一次只能启用一个页面。
-
结束旅游按钮的标签:默认情况下,最后一步的按钮标签为单步的明白了,多步旅游的结束旅游。如果您愿意,可以指定一个自定义标签。
-
显示步骤编号:是否显示步骤计数器,如 2/4,以指示旅游长度。这样的指示器在较长的旅游中很有用。
-
位置:步骤可以放置在目标(匹配块或 CSS 选择器)的上方、下方、左侧或右侧。应避免使用两个水平选项,因为这可能在移动设备上引起问题。如果大小超过可用空间,Moodle 将自动定位步骤。
-
显示如果目标未找到:有时指定的目标不会显示,例如,当用户的权限不允许时。在这种情况下,除非更改此设置,否则不会显示步骤。
-
显示背景:当勾选此选项时,此选项将导致目标被突出显示,其余屏幕变暗。我们在示例中应用了此设置。一些部分不支持背景,例如,主菜单栏。
-
点击继续:如果启用,当用户点击目标时,将显示下一步,模仿一种通过实践学习的功能。
此外,您还可以指定几个旅游过滤器,这些条件必须满足才能显示旅游。可用的过滤器如下:
-
访问日期:该过滤器根据账户创建、首次访问和最后访问来限制用户旅游。如果您希望将旅游限制为新用户或一段时间未访问网站的用户,这将很有用。
-
分类:只在所选分类的课程内的页面上显示巡览。
-
课程:只在所选课程内的页面上显示巡览。
-
课程格式:只在应用了所选课程格式的课程内的页面上显示巡览。
-
角色:只有向具有巡览显示上下文中选定角色的用户显示巡览。
-
主题:只有当用户正在使用所选主题时才显示巡览。
-
CSS 选择器:只有当页面上存在指定的 CSS 选择器时才显示巡览。有关 CSS 选择器的更多信息,请参阅我们添加步骤时的说明,我们将在下一部分进行介绍。
向您的巡览添加步骤
巡览包括多个步骤,模拟简单的浏览过程。在屏幕截图中,您可以看到我们“巡览巡览”巡览的三个步骤:

图 7.26 – 巡览步骤
一个步骤包含以下三个主要元素:
-
a.nav-link.active.active_tree_node,代表管理菜单的激活标签页。 -
使用页面中间选项显示与任何元素无关的一般信息。我们“巡览巡览”巡览的最后两个步骤使用此目标类型。
-
内容:此元素包含标题和步骤的解释性文本;后者还可以包含图像甚至教学视频。两个必填字段都将显示给用户。
要在用户选择的语言中显示您的步骤,请使用 identifier,component(有关详细信息,包括如何在字符串文本中包含图像,请参阅第十章中的管理本地化部分,配置技术功能),
Moodle 附带的所有巡览都使用了语言字符串功能。请注意,当修改这些内置巡览中的任何内容时,它们可能在下一次升级期间被覆盖。
- 选项:可用的步骤设置(位置、如果找不到目标则显示、显示背景和点击后继续)与巡览设置中指定的相同。您可以覆盖每个设置,例如,当背景不正确显示时,或者坚持使用继承的默认值。
当您通过底部的新建步骤链接添加新的步骤到您的巡览时,您将在以下表单中找到提到的元素:

图 7.27 – 添加巡览步骤
保存表单后,您可以添加所需数量的步骤到您的用户巡览中。您还可以在以后修改巡览或简单地修改任何现有内容。当巡览的结构发生变化时,Moodle 将识别这一点并向所有用户显示巡览,包括那些已经查看过先前版本的用户。当您只更改巡览的小部分时,您可以使用屏幕顶部的强制显示巡览链接来重置记录已查看巡览的内部存储。
现在你已经熟悉了创建多步骤的导览,让我们看看通过导入和导出共享导览。
导入和导出导览
你可以使用列表中的 导出 按钮下载导览。Moodle 创建一个 JSON 文件,可以导入到另一个 Moodle 网站。导入导览 按钮会带你到 Moodle 的标准上传功能。
导览存储库 是一个高质量用户导览的有价值资源。一旦你点击了它的按钮,你将被引导到 moodle.net 上的公共 用户导览 网站。在撰写本文时,大约有 100 个不同语言的用户导览,可能会引起你的兴趣。你需要做的就是选择你选择的文件,并点击 JSON 文件名,这将下载用户导览,然后你可以使用前面解释的导入机制将其加载到你的 Moodle 网站上。确保用户导览与你的 Moodle 版本匹配,以避免任何不一致。
如果你觉得自己创建了一个可能对他人感兴趣的有用用户导览,请随时在导览存储库中分享它。你需要做的就是导出你的导览,并使用你的 Moodle 账户,将其上传到 moodle.net 上的存储库。
这部分关于用户导览的内容到此结束,这是外观元素的最后一块基石。接下来是 Moodle 主题,它对整个 Moodle 网站都有影响。
使用 Moodle 主题
Moodle 提供了一个灵活的皮肤机制,以品牌你的网站并遵循企业设计指南。如介绍中所述,我们只会涵盖可以从 Moodle 管理菜单访问的主题设置。有关如何创建 Moodle 主题的详细信息,请参阅 Silvina Paola Hillar,Packt Publishing 的 Moodle 主题开发,或联系你的 Premium Moodle 合作伙伴,他们将能够提供专业的主题设计服务。在 docs.moodle.org/dev/Themes 上也有一些很好的提示,它假设你已很好地理解了 HTML 和 CSS。
虽然 Moodle 支持固定宽度和流体主题,但使用(或开发)响应式主题是非常推荐的。我们在这里专门介绍响应式主题。
重要提示
Moodle 反映出电子学习的未来是移动的,它只提供了两个响应式主题:Boost 和 经典。
响应式主题会自动适应设备、屏幕分辨率和屏幕方向。此外,响应式主题还会根据显示的学习内容和使用的导航进行调整。Moodle 主题基于 Bootstrap 4 并完全支持 SASS。
重要提示
所有现代浏览器(Firefox、Edge、Chrome 和 Safari 的最新版本)都完全支持 Moodle。
不支持 Internet Explorer 11 和其他旧版浏览器!
在这个主题部分,我们首先为您选择一个主题,然后再查看不同的主题类型。然后,我们自定义您的主题,这是一个分为一般、高级和功能主题设置的分类主题。
选择 Moodle 主题
可以通过访问 网站管理 | 外观 | 主题 | 主题选择器 来选择标准或自定义主题。在我们的网站上,您可以看到两个核心主题(Boost 和 Classic)以及根据 moodle.org 上的统计数据,最受欢迎的两个第三方主题 Moove 和 Adaptable:

图 7.28 – 主题选择
通过选择 使用主题 按钮选择一个主题,新皮肤将立即应用。然而,一些用户在更换主题后可能会遇到问题,因此建议在应用新主题或更新现有主题时清除主题缓存。
重要提示
确保所选主题与您的 Moodle 版本兼容。较旧的主题不会被 Moodle 4 主题引擎正确渲染。
到目前为止,我们已经为整个 Moodle 系统应用了一个单一的主题。要在不同的环境中应用不同的主题,我们需要掌握主题类型的概念,这是下一小节的主题。
理解主题类型
要理解大多数主题设置,我们需要一点背景知识。像角色一样,主题在不同的环境中分配:网站(系统)、用户(包括 群体)、分类 和 课程。Moodle 还支持两个附加区域:会话 和 页面。以下表格解释了这些 主题类型:

图 7.29 – 主题类型 I
表格简要描述了每个主题的作用域以及配置位置。作为旁注,您可以通过修改 config.php 中的 $CFG->themeorder 参数来更改主题的优先顺序(优先级)。默认设置为 array('course', 'category', 'session', 'user', 'cohort', 'site'。
要强制在不同区域应用主题,必须执行两个配置:
-
必须启用不同的主题类型,这发生在 网站管理 | 外观 | 主题 | 设置。您将看到每个主题类型的复选框,除了网站主题,它不能被禁用,以及页面主题,它已被保留供开发者使用。
-
必须通过 强制主题 选项为相应的主题类型选择一个主题。在此环境中拥有足够权限的用户可以进行此选择;例如,编辑教师被允许更改课程主题。
以下图中展示了这两种配置:

图 7.30 – 主题类型 II
当允许除网站主题之外的其他主题类型时,存在权衡:虽然允许不同的主题类型,但需要额外的处理,这将增加您的系统开销并增加对服务器的需求。然而,不允许这些主题会限制您网站上可以执行的自定义程度。为了帮助您解决这种统一性与个性化之间的平衡问题,以下是一些可能有助于主题选择功能的场景:
-
为有可访问性问题的用户提供主题(用户资料中的高分辨率主题)
-
对资格课程进行品牌化(分类主题)
-
创建主题库(会话主题通过 URL:
<yoursite>/?theme=<themename>)
在网站管理 | 外观 | 主题 | 主题设置中,还有两个与主题类型相关的剩余主题参数值得提及:
-
主题列表:要限制可用的主题数量,请在文本框中输入主题名称,用逗号分隔,且不要有空格。
-
主题设计师模式:此设置适用于设计师和开发者,实际上会关闭主题缓存。请不要在生产网站上使用此设置,因为它会显著减慢您的系统速度!
现在我们已经掌握了处理主题的技能,是时候自定义现有主题了。
自定义主题
作为管理员,您不太可能参与创建完整的自定义主题,因为这个任务需要强大的设计技能和对 CSS 和 HTML 的深入了解。然而,您将能够对现有主题进行基本修改。
主题自定义可以分为三类。虽然并非所有主题都遵循这种方法,但它能很好地说明您可以通过主题设置执行哪些类型的自定义:

图 7.31 – 主题自定义
基本设置处理一些基本参数、图像和颜色;高级设置允许您添加自定义 CSS 代码,而功能设置则向您的系统添加新功能。我们将在以下子节中介绍这三种类型。
通用主题设置
通用主题设置允许您指定一些基本选项、背景图像和品牌颜色。我们介绍了两个核心主题(它们的设置几乎相同),因为许多自定义主题都是基于它们的。第三方主题可能具有额外的设置,例如更多的颜色字段、字体大小或按钮样式。
前往网站管理 | 外观 | 主题并选择经典或增强,您可以在那里配置以下选项:
-
使用深色风格导航栏:在经典主题中,在深色和浅色风格导航栏之间切换。
-
不必要的块:某些块在某些主题中不需要或不被支持。在这里,您可以禁用它们,而无需为其他主题隐藏它们。
-
主题预设和附加主题预设文件:预设包含用于生成主题新样式表的 SCSS 指令。有关预设和 SCSS 的更多信息,请参阅以下小节。
-
背景图片和登录页面背景图片:这两个设置应该不言自明。
-
品牌颜色:菜单项和按钮将更改为所选颜色。
通用主题设置通常不足以根据您的需求设计网站。CSS 提供了更多的灵活性,我们将在下一节中介绍。
高级主题设置
Moodle 使用层叠样式表(CSS)来描述显示的每个元素的呈现方式。CSS 定义了 HTML 呈现的不同方面,包括颜色、字体、布局等。
要了解更多关于主题基础的信息,请访问docs.moodle.org/dev/Themes_overview,在那里您将找到一个文档齐全且详细的帮助部分。确保您熟悉浏览器中的检查工具,以识别 CSS 样式和属性。
Moodle 在命名样式时始终使用一致的普通英语。对于以下两个屏幕截图显示的登录页面元素,一些样式样本已被标注(左侧为原始版本,右侧为修改版本):

图 7.32 – CSS 样式样本
您可以看到,样式代表 Moodle 的每个元素。Moodle 中实际上有成千上万的样式,这为设计师提供了高度的自由度。
Moodle 支持Sassy CSS(SCSS),它是 CSS 的超集,提供了变量和嵌套等额外功能。SCSS 是一种预处理语言,在应用于任何网站之前将其转换为 CSS。为了简化,我们将在本章中坚持使用 CSS。
小贴士
如果您已经拥有任何 SCSS 代码或库,请随意使用这些代码进行视觉定制。
您希望注入站点的任何代码都应直接在主题中应用,在网站管理 | 外观 | 主题 | <主题>。在高级设置选项卡中,您将找到两个设置,允许您覆盖初始 SCSS 变量并向主题添加新的 SCSS,而无需修改后端中的任何代码:原始初始 SCSS(在所有其他代码之前注入)和原始 SCSS(在样式表末尾注入)。在以下示例中,我们添加了三个变量,以在整个网站上为所有字体添加一些权重:

图 7.33 – 高级主题设置
我们在常规设置中已经遇到过的第二个概念是主题预设。根据开发者文档,预设是一个设计用来添加到 Boost 主题或其子主题中的 SCSS 文件。它将 Bootstrap 4 SCSS 文件与所需的 Moodle SCSS 文件相结合,并添加了一层定制。预设文件可以上传到主题的管理设置中,然后从已安装预设列表中选择。
Moodle 还支持Mustache模板来渲染 HTML 输出。有关 Moodle 对 Mustache 的使用更多信息,请查看 Moodle 开发者文档docs.moodle.org/dev/Templates。
从技术上讲,您可以使用 SCSS 和主题预设来定制整个网站。然而,除非只有少数调整,否则其使用起来繁琐,维护可能也相当棘手。第三方或自定义主题克服了这一缺点,并有可能引入新功能。
特色主题设置
主题的美丽之处在于,它们不仅可以控制外观和感觉元素,还可以添加新功能。所有流行的主题都利用了这种能力,并添加了新功能。
在moodle.org/plugins/?q=type:theme上有很多主题。还有许多设计和开发公司通过他们的网站提供付费的 Moodle 主题。根据moodle.org上的统计数据,最受欢迎的三个主题是Moove、Adaptable和Fordson。为了给您一个专业主题配置选项的直观印象,请查看Adaptable主题的片段:

图 7.34 – Adaptable 主题
只需看看菜单项的数量!该主题提供了大量的定制选项,从自定义菜单、首页幻灯片、新闻滚动条和营销位置到社交网络图标和分析支持。请参阅第八章,理解 Moodle 插件,了解如何安装第三方主题。
主题和定制的话题非常复杂,Moodle 管理员通常不参与设计和品牌过程。我们已经介绍了可以通过管理界面定制的主题基础知识,并希望这为您对这个话题提供了一些洞察。与主题定制密切相关的是可访问性,这必须在您的网站上得到保证。
确保可访问性
在大多数教育设置中,可访问性现在是法律要求。因此,确保您的系统符合相关标准至关重要。
重要提示
可访问性是某些残疾用户访问 Moodle 功能的能力。
Moodle Docs 中已专门为 Moodle 可访问性设立了一个区域,您可以在 docs.moodle.org/en/Accessibility 访问它。它提供了到标准、指南、立法以及与主题相关的工具和资源的有用链接。
三个主要可访问性区域影响了 Moodle 中的可访问性:
-
系统可访问性
-
主题可访问性
-
内容可访问性
我们将在以下子节中涵盖所有三种可访问性类型。
系统可访问性
Moodle 完全符合主要可访问性标准,并获得了 WCAG 2.1 级别 AA 认证。Moodle 强制执行 XHTML 1.0 Strict,这仅允许使用符合标准的 HTML 构造和 Moodle 表单库的实现。这些限制保证了页面之间的连贯性,并确保在不进行进一步配置的情况下支持标准屏幕阅读器。
Moodle 提供了指向外部验证网站的链接,检查当前页面的标准合规性。转到 站点管理 | 开发 | 调试 并勾选 显示验证器链接 框以激活这些链接。验证 HTML 和 Web 内容可访问性指南 (WCAG) 检查 链接将显示在您的页面底部(如果您的主题支持):

图 7.35 – 验证器链接
在选择相应的链接时,外部验证网站将以 URL 作为参数打开。为了使验证网站能够检查您的 Moodle 系统上的页面,您需要创建一个用户名为 w3cvalidator 的新用户,并启用您网站的访客访问权限。仅在测试或预发布站点上执行此操作,因为这些设置可能会损害您系统的安全性。
验证网站不仅检查页面上的任何问题,还检查主题问题,这些将在下一部分介绍。
主题可访问性
CSS 是 Moodle 的表示层,独立于系统层,以 XHTML 1.0 Strict 表示。因此,主题本身也必须确保可访问性。
在您直接在主题中或通过自定义 CSS 实现可访问性样式后,请确保这些样式已针对任何问题进行了验证。
一个流行的选择是将可访问性选项集成到主题中,并以选项的形式提供,例如不同的配色方案、字体样式、文本大小和可读性选择。您可以从 github.com/sharpchi/moodle-local_accessibilitytool 安装可访问性工具,以下选择将通过所有用户的偏好菜单(如果您的主题支持)对所有用户可用:

图 7.36 – 可访问性工具
系统和主题的无障碍性是您作为管理员完全控制的;另一方面,内容无障碍性更难实现,因为您依赖于内容创作者。如何帮助他们将在以下子节中介绍。
内容无障碍性
无障碍合规性仅适用于 Moodle 页面(假设主题遵循所有标准),但不适用于教师和讲师新创建和上传的内容。
Moodle 提供了一些基本的内置工具,以帮助内容创作者:
-
libtidy选项。 -
Atto 中的无障碍检查器按钮对输入的 HTML 代码执行一些基本检查,以确保符合无障碍指南。
-
Atto 中的屏幕阅读器助手按钮检查图像是否已正确标记以确保屏幕阅读器兼容性。
虽然这些工具提供了一些基本帮助,但它们在帮助内容创作者确保无障碍合规性方面是不够的。为了实现完全的无障碍合规,应促进无障碍工具包的使用。要了解工具背后的原理,请查看以下图表:

图 7.37 – 无障碍工具包流程
无障碍工具包包括以下步骤:
-
课程内容被预处理,并提取分析所需的数据。这些数据包含任何相关的分析内容以及有关内容的信息,例如 HTML 标签。
-
数据分析在您的 Moodle 服务器后台进行;没有内容从您的站点转移出去。(从 Moodle 站点转移出去的唯一数据仅用于一个目的:发送关于总体数据的定期摘要,用于统计和进度目的,例如课程数量、用户数量、分析检查错误等。)
-
结果可通过无障碍审查块获得,并在工具包的不同数据拆分页面上提供更详细的信息。
系统的优点在于,每次内容更新时,仅分析数据的增量。这种机制减少了您的 Moodle 站点的负载,并在您的服务器上更快地执行分析。
作为管理员,您必须确保工具已正确配置,这需要以下步骤:
-
确保在网站管理 | 一般 | 高级功能中启用了无障碍工具。
-
在 Brickfield 教育实验室注册无障碍工具包。前往网站管理 | 插件 | 管理工具 | 无障碍 | Brickfield 注册并遵循注册链接。您需要创建一个账户并添加您的站点详细信息,然后才能收到您的 API 密钥和密钥。这些密钥将在您的 Moodle 站点上的注册页面上提交后启用您的工具包。
-
进入网站管理 | 插件 | 管理工具 | 可访问性 | 可访问性工具包设置并启用分析请求。分析会自动更新,以便在持续的基础上对请求的课程进行内容编辑;删除历史检查结果允许工具包删除被较新记录取代的旧分析记录。批量限制设置计划任务定期运行的分析批次的限制:

图 7.38 – 可访问性工具包设置和审查块
-
进入网站管理 | 插件 | 块 | 可访问性审查并确保在课程页面上显示的内容、以这种格式显示错误和要显示的工具包页面设置已正确配置。
-
进入
tool_brickfield,并将前四个任务改为每分钟运行一次(将分钟设置改为*****)。默认设置为 5 分钟,以避免在初始分析期间可能出现的过载。有关更多详细信息,请参阅第十五章中的Cron 管理和计划任务部分,优化 Moodle 性能。
随 Moodle 一起提供的可访问性入门工具包包含一些有用的工具,以帮助内容创作者制作符合可访问性标准的[学习材料]。企业可访问性工具包(www.brickfield.ie/brickfield-accessibility-toolkit)提供了一套完整的特性,以帮助您的组织提高课程的可访问性。有关详细信息,请访问www.brickfield.ie/brickfield-accessibility-toolkit。
这标志着关于复杂任务的可访问性部分的结束,也标志着配置 Moodle 外观的章节的结束。
摘要
在本章中,我们处理了 vanilla Moodle 网站的并不那么吸引人的外观和感觉,并触及了大量支持定制的区域。
我们首先查看管理员可以定制的页面:登录、主页、仪表板、我的课程和用户资料。然后我们涵盖了在整个网站上可见或可用的外观元素:页眉、块、视频和音频、Atto 编辑器和用户之旅。
本章的第二部分关注的是主题的定制。在通过一般、高级和功能主题设置定制您的主题之前,我们查看了几种不同的主题类型。
最后讨论的主题是可访问性,这是大多数教育环境中的法律要求。我们处理了系统、主题和内容可访问性。
重要提示
在您未登录时,请再次检查您网站的外观。确保没有信息可见,这些信息只应供登录用户访问。
适应您的 Moodle 系统的外观和感觉的主要目标是确保用户体验的一致性,同时易于使用。然而,定制的程度受到以下三角图中所示的两个因素的约束:

图 7.39 – 定制化程度
您网站的呈现受到限制,通常包括您组织的公司设计指南和可访问性规定。此外,定制的程度越高,在您升级网站到新版本时所需的潜在维护工作量也越大。在修改任何视觉 Moodle 元素或将任务外包给 Moodle 合作伙伴时,建议您考虑这些方面。
现在您的 Moodle(希望)看起来正是您想要的样子,是时候启用您希望提供给用户的全部功能了。插件是向您的 Moodle 系统添加新功能的灵活方式,我们将在下一章中讨论这个问题。
第八章:理解 Moodle 插件
您的系统完全运行正常,其外观和感觉反映了您组织的品牌。与所有复杂的基于 Web 的应用程序一样,可以执行大量配置活动,以使 Moodle 符合您组织的需要和要求。
在本章中,我们首先将提供插件概述。然后,我们将探索一些第三方插件并了解它们的强大功能。在结束之前,我们将了解如何安装、更新和删除插件,最后讨论插件评估标准、流行插件和组织决策。
Moodle 的许多优点之一是其可插拔架构。Moodle 支持广泛的插件,我们将通过以下主题来阐明:
-
Moodle 插件——概述
-
第三方插件的强大功能
-
管理第三方插件(安装、更新和删除)
-
优秀的插件和糟糕的插件(插件评估标准、流行插件和组织决策)
关于术语:在本章中,我们将互换使用插件、模块和附加组件。
让我们从插件和集成概述开始。
Moodle 插件——概述
Moodle 是一个(非常)模块化系统——毕竟,Moodle 中的M就代表模块化——Moodle 的大部分功能都作为模块实现,称为插件。
重要提示
Moodle 插件是提供某些特定、通常封闭的功能的模块。
导航到插件标签页,位于站点管理区域。在所有插件类型下方显示之前,您将找到两个处理安装和管理插件的菜单项。
让我们从插件概述开始,它显示所有已安装插件的列表。每个插件显示的信息包括以下内容:
-
插件名称:插件的官方名称。
-
组件名称:一个唯一的内部标识符,显示在插件名称下方。
-
版本:插件版本号,以日期格式显示。一些第三方插件还显示支持的 Moodle 版本。
-
可用性:启用或禁用。
-
操作:如果可用,链接到插件设置。
-
卸载:删除插件的选择;对于某些核心插件不可用。
-
备注:附加信息,通常是依赖项或错误的形式。
如图 8.1.1 所示,插件概述窗口有助于快速了解您的系统上已安装的内容以及可用的功能。您还可以通过屏幕顶部的按钮执行可用更新的检查。
选择附加插件链接以查看已安装的第三方插件。我的 Moodle 系统上有 16 个附加插件。我们在第七章“增强 Moodle 的外观和感觉”中使用了其中一些;我们将在本章后面安装其他插件。

图 8.1 – 已安装的插件
你还可以看到每个插件都被放置在一个类别中,即所谓的插件类型,这在搜索第三方插件时是一个很好的筛选标准,正如我们稍后将会看到的。
小贴士
插件被分为插件类型和插件子类型。有关更多信息,请参阅docs.moodle.org/dev/Plugin_types。
如你所见,从你实例的长列表中,Moodle 已经预装了超过 400 个插件。大多数插件在 Moodle 本身的环境中工作;也就是说,它们不需要与其他系统通信。然而,一些插件——集成插件——需要与其他系统或服务进行某种形式的数据交换。在光谱的另一端,我们有系统插件,它们需要一些内部配置才能正确运行。
我们的插件概览图表遵循与 Moodle 插件类型列表相同的结构和顺序:

图 8.2 – Moodle 插件概览
一些插件类型在此图表中未列出。它们可能代表一种利基类型,例如文档转换器和开发工具,如网络服务协议,或者被处理得不同,例如主题。
在图 8.2中每个插件旁边附带的微小气泡表示插件涵盖的章节。E气泡将在第九章“配置教育功能”中处理,而T气泡在第十章“配置技术功能”中处理。
重要提示
在任何插件中修改设置时请谨慎。不适当的值可能导致整个系统出现问题。
我们还没有提到一种名为readme.txt文件的插件类型,它位于dirroot目录下的local目录中。
插件将数据存储在最多三个位置:
-
它始终存储
dirroot。这是插件本身。 -
它可能在数据库中存储数据,例如配置设置或用户数据。
-
它可以存储
dataroot,例如,图片或视频。
以下图表展示了这些依赖关系:

图 8.3 – 插件数据
如果你删除了 Moodle 中任何位置使用的插件——无论是核心插件还是自定义插件——所有已创建的实例都将被删除,包括任何相关的用户数据!删除插件是不可逆的;必须从头开始安装。
重要提示
除非你 100%确定你永远不会再次需要它们,否则不要删除任何核心插件。如果你希望防止使用核心插件,最好是隐藏它而不是删除它。
在发出如此严厉的警告后,让我们扩展你的 Moodle 系统,添加第三方插件。
第三方插件的力量
存在着大量的第三方 Moodle 软件,它们增加了新功能、修复了不足,或将 Moodle 与外部系统和云服务集成。让我们从第三方软件的概述开始。
Moodle 随带一套全面的内置插件。虽然提供的功能足以满足大多数用例,但仍有越来越多的软件需求。此外,随着时间的推移,对 Moodle 系统的新功能需求也在增加。
由于 Moodle 的开源性质和模块化,对于开发者来说,添加新功能或修改现有功能相对简单。这些可以从小的修改(补丁)或黑客攻击到完整的模块。你可以通过访问 moodle.org/plugins 来访问 插件目录,其中包含所有经过批准的非核心插件(和主题)。
你有三个选项来浏览插件目录:
-
使用 搜索 功能,通过关键词进行帮助
-
使用 插件类型 结合其他标准,如版本或目的
-
使用 导航 在侧边块中,你还可以贡献新的插件
无论哪种方式,你都应该最终得到一个附加组件列表。一旦你点击插件名称,你将看到详细信息,例如描述、安装说明、统计数据和翻译。
在撰写本文时,有超过 2,000 个第三方 Moodle 插件,并且这个数字正在持续增长。你将找到各种附加组件,从古怪而奇妙到非常强大。
现在我们知道了插件的位置,让我们在下一节中看看如何安装、更新和删除它们。
管理第三方插件
第三方插件的管理包括基本的添加、更改和删除标准操作。有四种不同的方式来安装、更新和卸载插件,我们将在本节中介绍:
-
通过 网页界面 安装
-
手动安装
-
通过 Git 安装
-
通过 命令行 安装
一旦你通过任何四种方法之一添加、修改或删除了插件,你需要从 moodledata 触发 Moodle 更新器。以下图表显示了这些过程:

图 8.4 – 插件管理
如果更新器添加了任何可配置的设置,它们将在单独的 新设置 页面上显示。如果插件不包含任何新参数,则将跳过此屏幕。
重要提示
在维护模式下安装、更新和删除插件,维护模式可以通过 站点管理 | 服务器 | 维护模式 激活。虽然在使用 Moodle 的同时添加大多数插件是可能的,但并不推荐这样做,因为这可能导致不可预见的问题。
在以下小节中,我们将通过安装一些流行的第三方插件来处理安装、更新和删除插件的三种标准管理操作。
安装第三方插件
在您的 Moodle 系统中安装插件可以极大地增强功能集,从而提高用户的使用体验。然而,我们建议不要在生产站点上对新插件进行实验。大多数组织都会设置一个与实时服务器相对应的影子站点,用作沙盒。一旦安装成功,该过程将在生产站点上重新应用。
重要提示
在安装新插件之前,首先在一个测试或预发布站点上试用新插件。在安装新插件之前,备份您的生产站点。
此外,建议在安装任何第三方软件之前进行完整的站点备份。这样,在发生灾难时可以回滚。我们将在 第十六章,避免失眠之夜 – Moodle 备份 和 恢复 中处理备份。
重要提示
确保插件版本与您正在运行的 Moodle 版本兼容。
大多数插件的结构非常相似。然而,一些模块可能不遵循这种标准化方法,或者需要其他步骤,尤其是在模块与其他软件系统通信时。每个插件都应该包含一个(通常是)名为 README 的文件,在开始安装过程之前阅读其中的说明非常重要。
我们将通过添加一个流行的插件来演示每种安装类型(网页界面、手动、Git 和命令行),从之前章节提到的视频时间插件开始。
通过网页界面安装视频时间插件
安装插件的最简单方法是转到 站点管理 | 插件 | 安装插件。然而,您必须确保服务器上的目标目录可写,这在生产站点上出于安全原因不建议这样做,但在测试站点上通常是可以接受的。使用基于网页的插件安装器有两种选项:
- 从 Moodle 插件 安装插件
此选项将带您进入熟悉的插件部分 moodle.org/plugins,在那里您必须登录以执行安装。此外,请注意,您的站点全名、URL 和 Moodle 版本将被传输以确保安装过程顺利。一旦您找到了您想要安装的插件(这里为视频时间),您将看到一个额外的 立即安装 按钮:

图 8.5 – 从 Moodle 插件安装插件 I
选择后,将显示您的站点列表,您需要再次选择现在安装。您将被重定向回您的 Moodle 站点,其中一条消息将指示插件是否可以安装或出现了问题;例如,目标目录不可写。一旦确认,将执行插件验证,并在安装之前必须确认已熟悉的插件检查屏幕。

图 8.6 – 从 Moodle 插件 II 安装插件
点击现在升级 Moodle 数据库后,更新程序将被启动,标准安装过程将开始。
- 从 ZIP 文件安装插件
或者,您可以通过导航到站点管理 | 插件 | 安装插件界面下载并上传插件。在安装之前,您必须确认验证屏幕。

图 8.7 – 从 ZIP 文件安装插件
安装程序会自动检测正确声明其组件名称的插件类型。如果自动检测失败,请手动选择正确的插件类型。如果指定了错误的插件类型,安装过程可能会失败!如果您需要更改插件安装的根目录,请更改重命名根目录设置。
通过 ZIP 文件安装让您不仅可以从moodle.org上的公共插件存储库添加插件,还可以从其他来源添加,例如受信任的开发者或(高级)Moodle 合作伙伴。
两种已涵盖的基于 Web 的安装方法的优点是它们的简单性;需要付出的代价是牺牲了站点安全性。以下插件安装方法克服了这一限制。
手动安装 Zoom 会议插件
您可以通过手动执行这些安装任务作为通过管理界面安装插件的替代方案。为了演示这些步骤,我们选择了Zoom 会议插件,在疫情期间,当在家办公成为许多人的常态,视频会议的需求显著增加时,该插件变得非常流行。
在插件存储库(moodle.org/plugins/mod_zoom)中找到附加组件后,下载适合您 Moodle 系统版本(此处为 4.0)的软件版本。接下来,将 Moodle 置于维护模式(站点管理 | 服务器 | 维护模式)。
该模块遵循标准的插件结构;它使用 Moodle 预定义的目录层次结构和命名约定。最好将 ZIP 文件复制到$CFG->dirroot/mod目录,并通过unzip命令解压文件。你可能需要更改文件夹的用户和组属性。根据它们的类型,其他插件必须放置在$CFG->dirroot中的其他目录中。
现在,转到网站管理 | 常规 | 通知,页面背后的模块将识别出需要安装新模块,并启动更新器。

图 8.8 – 手动安装插件
你将在/mod/zoom中看到一个新条目,状态为待安装。一旦你通过现在升级 Moodle 数据库按钮确认,就会创建并填充字段的数据表,显示安装的整体成功情况。
如果新插件包含可以通过管理界面配置的设置,它们将显示在模块的单独的apikey、apisecret和zoomurl上,以便模块能够运行。
就这些了!你现在需要确保模块按预期工作。在Zoom 会议的情况下,转到网站管理 | 插件 | 活动模块 | Zoom 会议,你将看到新安装的附加组件的条目。你可以在github.com/ncstate-delta/moodle-mod_zoom/wiki找到详细信息。
最后,别忘了禁用 Moodle 的维护模式,并通知用户新功能现已可用!
手动安装第三方插件的一个替代方案是通过 Git 安装和更新它们,我们将在下一个小节中介绍。
通过 Git 安装和更新工作场所证书管理器
鼓励开发者维护他们个人的 Git 仓库,这些仓库可能包含多个 Moodle 扩展。我们将使用流行的工作场所证书管理器来演示如何从其 Git 仓库安装贡献的扩展。正如其名称所暗示的,该插件是 Moodle 工作场所的一部分,并且已被提供以在 Moodle LMS 中工作。查看 Moodle 文档页面docs.moodle.org/en/Certificates和第九章中的管理证书部分,以获取有关该工具的详细信息。
当你浏览插件页面时,你会看到一个指向源控制 URL的链接,这将带你到插件的 GitHub 条目。GitHub(现在由微软拥有)是管理 Git 仓库的事实标准网站。

图 8.9 – 通过 Git 安装插件 I
工作场所证书管理器是一个管理工具。要安装插件,你必须执行以下步骤:
-
切换到
$CFG->dirroot/admin/tool目录(这是存储管理工具的地方)。 -
执行以下
git命令,该命令将添加一个名为certificate的新子目录,并创建插件代码仓库的本地副本:git clone https://github.com/moodleworkplace/moodle-tool_certificate.git certificate
当执行 git 命令时,进度会像以下截图所示:

图 8.10 – 通过 Git 安装插件 II
- 前往 站点管理 | 常规 | 通知 页面,并运行要添加到您的 Moodle 系统中的插件的升级屏幕。一旦成功执行最后一步,您可以通过导航到 站点管理 | 常规 | 证书 | 管理 证书模板 来访问该插件。
另一个插件与 工作场所证书管理器 协同工作。工作场所课程证书 活动模块 (moodle.org/plugins/mod_coursecertificate) 会自动向课程参与者发放数字证书。您可以自由安装此插件并查看其文档,请参阅 docs.moodle.org/en/Course_certificate_activity。
通过 Git 安装的优势在于您有一个版本历史,并且可以在出现任何问题时回滚。另一个好处是将 Git 命令放入 shell 脚本中可以自动化插件维护。然而,有些人可能觉得 Git 语法有点晦涩,或者使用 Git 过于复杂。Git 的直观替代品是 MOOSH 命令行工具,它可能在某些环境中工作得更好。
通过命令行安装插件
Moodle 本身不支持通过其 CLI 安装插件,但有一个名为 MOOSH 的实用程序可以做到这一点。您可以在 Moodle 插件数据库中找到这个工具(moodle.org/plugins/view.php?id=522)。要安装 MOOSH,解压缩下载的包,并在您的程序文件夹中设置一个符号链接:
sudo ln -s $PWD/moosh.php /usr/local/bin/moosh
现在,您应该能够从命令行执行 MOOSH。有关进一步的安装选项,请查看 moosh-online.com。
MOOSH 有点不同;也就是说,它不是一个插件,而是一个支持超过 150 个命令的命令行工具,其中有两个与安装插件相关:
-
moosh plugin-list:此命令列出所有可用的插件(全名、简称、支持的 Moodle 版本和简短描述),这些插件可在 moodle.org/plugins 上找到;由于列表非常庞大,应用一些过滤器,如模块名称,是有意义的。 -
moosh plugin-install mod_coursecertificate 1:此命令下载并安装当前版本的plugin-list命令(moosh plugin-list | grep "``Course certificate")。
您可以使用 config_plugins 命令来配置插件的设置。要查看您 Moodle 实例上安装的所有插件的概览,请使用 info-plugins 命令。
您将在本书的多个地方遇到 MOOSH,并且有一个完整的章节专门介绍这个工具,见 第十七章,与 Moodle 合作 管理工具。
到目前为止,我们已经了解了替代插件安装程序。大多数插件都会发布常规更新,下一小节的主题是如何保持您的附加组件更新。
保持插件更新
Moodle 管理员面临的一个主要挑战是保持插件更新。前面的步骤对于一次性安装是足够的,但并不适用于插件维护。
您如何知道有新的插件可用?您可以自动通过电子邮件接收通知(前往 站点管理 | 服务器 | 更新通知,如 第一章,安装 Moodle 中所述),您可以在 站点管理 | 插件 | 插件概览 中手动检查更新(见图 *图 8**.1),或者您可以去 站点管理 | 常规 | 通知,在那里您可能会看到以下通知:

图 8.11 – 是否需要插件升级?
保持插件更新取决于您最初选择的安装方法:
-
网页界面:前往 站点管理 | 插件 | 插件概览,在这里的 安装可用更新 按钮将启动任何可用插件的更新过程(下载和安装)。
-
手动:您需要下载最新版本至 moodle.org/plugins 并重新安装,如前所述。
-
Git:为了在一段时间内保持插件的更新,您需要创建与 GitHub 上远程分支同步的本地模块分支。您可以在 docs.moodle.org/en/Git_for_Administrators 找到如何操作的详细说明。
-
moosh plugin-install <插件> <moodle_version>。
插件可能会变得过时,或者可能会发布更好的替代品。在下一小节中,我们将讨论如何从您的 Moodle 系统中删除插件。
卸载第三方插件
Moodle 插件通常包含两部分:插件代码,位于 $CFG->dirroot 的子目录中,以及与插件相关的数据,位于数据库和/或 Moodledata 中。当删除插件时,您必须确保这两部分都已删除。如果代码被删除,但数据库或文件系统中仍有数据,可能会出现不一致;如果数据已删除,但插件仍然存在,则在下次更新器启动时将重新安装。
插件的移除再次取决于您最初选择的安装方法:
-
Web 界面:前往网站管理 | 插件 | 插件概览,在那里您必须点击卸载链接。一旦确认删除,与插件相关的所有数据都将被删除。为了防止插件重新安装,必须从您的服务器上删除其代码,这可以通过确认第二个屏幕来完成。
-
手动:该程序与通过 Web 界面卸载的程序相同。唯一可能不起作用的一步是删除 Moodledata 中的插件代码,因为权限不足。如果是这种情况,您必须在 shell 级别删除文件夹(s)。
-
Git:要删除插件代码,您必须运行以下命令:
git rm <plugin> -
虽然此命令使您的本地 Git 存储库保持最新状态,但它不会删除与插件相关的数据。与之前一样,您需要通过网站管理 | 插件 | 插件概览中的卸载选项手动执行此操作。
-
plugin_uninstall命令:moosh plugin-uninstall <plugin>。此命令删除插件代码和插件数据。
您不需要绑定到维护插件的单一方法;您可以通过命令行安装附加组件并手动删除它。唯一需要一致性的方法是 Git,因为存储库必须与 Moodle 实例的代码库保持同步,以避免不一致性。
重要提示
删除附加组件也将不可逆地删除与该模块相关的所有用户数据!
这就结束了关于管理第三方插件的部分。以下表格提供了四种描述的插件管理类型的总结,突出了关键功能和限制:

图 8.12 – 插件管理选项
到目前为止,我们还没有区分优秀和不太优秀的插件,这是下一节的主题。
优秀的插件和糟糕的插件
每个构成 Moodle 核心的模块都经过了一项彻底的质量保证程序。Moodle 对其数据库中接受第三方插件实施了一个严格的过程。虽然这种做法不能保证附加组件的功能、安全性和完整性,但它会在高级别评估代码。一旦通过这一阶段,它将被接受到插件数据库中。第三方附加组件的潜在问题是您对软件的质量一无所知。
虽然如果模块不符合您的目的,您可以将模块卸载,但您必须确保您不会为未来的更新设置障碍。如果附加组件没有得到正确的维护,它可能无法支持任何即将推出的 Moodle 版本。您必须删除已使用的模块,否则您将无法升级您的系统。此外,一个模块可能满足某些所需功能,但可能会损害您系统的安全性。
插件评估标准
几个标准可以表明一个插件是否值得信赖。它们如下:

图 8.13 – 插件评估标准
以下列举为图中的每个项目提供简要说明:
-
流行度:Moodle 维护有关使用和下载的统计数据,这些数据可以在每个插件的统计标签页中找到。虽然没有保证,但一个模块越受欢迎,它达到高标准的可能性就越大。
-
评分:每个插件页面允许用户将插件标记为他们的最爱。同样,这里没有保证,但越多的管理员是某个插件的粉丝,那么这个插件很可能是好的插件。
-
支持级别:一些最有价值的第三方附加组件已经消失,因为它们没有得到支持。如果您的主要利益相关者在 Moodle 中支持该附加组件,即(高级)Moodle 合作伙伴,那么这是您的最佳选择。维护者应在过去 60 天内积极参与社区。
-
论坛帖子:鼓励用户就每个模块发布评论、问题和赞扬。阅读这些帖子以了解其他用户所经历的情况。对于完全没有讨论的模块要持怀疑态度。此外,检查评论部分是否有任何负面评价。
-
文档:每个附加组件应在 Moodle Docs 中有一个专门的页面。如果页面不存在或只是一个维基草稿,通常这不是一个好兆头。此外,如果为开发软件保留变更日志,这也是一个好的做法。
-
独立:第三方附加组件不得修改任何核心代码(称为以补丁文件形式提供的补丁)。这个限制是必要的,因为每次 Moodle 更新都会覆盖这些更改,并且必须重新应用这些修改。
-
支持的版本:支持当前和所有支持的 Moodle 版本表明该软件正在积极维护。您可以在版本标签页中查看任何现有版本。
-
备份和恢复支持:如果适用,该附加组件应支持课程备份和恢复功能。否则,如果活动不包括在您的存档中,那么它有什么好处?
-
数据隐私:如果插件存储任何数据,Moodle 的数据隐私功能(数据请求、数据登记和数据删除)必须得到完全支持。更多详细信息可以在第十四章中找到,遵守数据保护法规。
-
代码:如果您能阅读 PHP 代码,请查看附加组件的实际源代码。尝试回答以下问题:代码结构良好,并且易于跟踪吗?源代码有良好的注释吗?该模块遵循 Moodle 编码指南(docs.moodle.org/dev/Coding)吗?如果对这些问题的任何回答是否定的,请小心。
-
官方批准: 存储在官方 Moodle 插件存储库之外的插件,例如在开发者的主页上,只有来自知名来源的插件才应被信任。
-
开发者: 一些开发者以编写高质量的 Moodle 插件而闻名。与(高级)Moodle 合作伙伴有关联的程序员通常是不错的选择,核心开发者、Moodle 文档编写者和特别有帮助的 Moodlers 也是如此。
音质是一个不可协商的标准,但仍有许多优秀的第三方插件可用。我们已经整理了一份流行插件的列表,您将在以下小节中看到。
流行插件
以下是一些流行的第三方 Moodle 插件列表,可通过moodle.org/plugins插件目录获取,附带简要描述(不包括主题和课程格式,这些我们在第七章,增强 Moodle 的外观和感觉中已经介绍过):
-
Adminer: 这是一个 Adminer 的重新打包版本。安装后,您将在服务器菜单中看到一个新的Moodle Adminer项目。此工具可以处理所有数据库相关操作,包括创建数据库备份。
-
出勤: 该插件允许在混合学习环境中记录出勤日志,并包括一个便于访问相关功能的模块。
-
Checklist: 此插件包含一个活动模块和一个块,允许教师创建清单以帮助学生。教师可以监控所有学生完成清单上每个项目的进度,项目可以缩进并标记为可选。学生将看到一个进度条,他们可以将私人项目添加到列表中。
-
完成进度: 此块是学生的一个时间管理工具,可以直观地显示学生在课程中应该与哪些活动和资源互动。
-
Dash: Dash 是一个界面和报告构建器,允许您创建灵活的课程目录、团队仪表板和进度报告等。
-
Level Up: 这为向您的 Moodle 系统添加各种游戏化元素提供了很好的方式,支持(经验)点、(可配置)级别、排行榜、目标、奖励等。
-
Microsoft Office 365: 微软开发了一套插件,允许在 Moodle 中使用 Microsoft Office 365。该套件包括通过 OpenID 登录、访问 OneDrive、与 Office 资源的集成以及 Outlook 日历同步。
-
Zoom: 为了加强我们对 Zoom 的爱恨交加的关系,我们可以将插件添加到我们的 Moodle 实例中,如本章前面所述。我们将在第十章,配置 技术功能中详细讨论内置的 Web 会议系统 BigBlueButton。
持续监控@moodleplugins列表。总有一些新插件可能会对你的网站有所帮助。然而,在将每个可能对某些用户在未来某个时间有用处的插件添加到你的网站之前,请考虑一些组织标准,我们将在下一节讨论。
关于插件的组织决策
在你疯狂地给你的 Moodle 系统添加数十个插件之前,请坐下来反思以下问题:
- 这个插件是为谁准备的?
插件是否满足广泛用户的需求,或者只是满足少数具有非常特定需求的培训师的需求?它是锦上添花的噱头,还是必不可少的特性?两者都不是问题;只是要意识到这一点。
- 你的用户有什么需求?
从代表用户群体收集你员工的需示已被证明非常有用。数学教师的需求与语言教练不同,新手需要与专家分开的工具,课程作者请求的功能与课程协调员所需的不同。首先收集所有需求,然后决定需要哪些插件来满足大多数用户。
- 你的用户会受到什么影响?
添加新的活动、问题类型和课程格式是给教师提供新工具以构建引人入胜的学习内容的好方法。然而,要考虑到你员工的技能以及他们需要投入多少时间来掌握这些附加功能。
- 你的基础设施会受到什么影响?
一些插件需要访问其他系统,例如,身份验证插件或云服务。其他插件依赖于商业服务,例如,视频会议工具或剽窃检测系统。确保插件适合你的基础设施,并且如果需要支付定期费用,有持续的预算。
- 有没有替代方案?
确保内置工具无法满足需求。如果不是这样,请在 Moodle 插件目录中寻找替代选项。
在你的系统中添加插件时要非常谨慎选择——你维护的附加组件越少,长期来看你面临的工作和潜在麻烦就越少。
摘要
在本章中,我们学习了有关 Moodle 插件的基本知识。我们首先提供了插件概述,然后介绍了管理第三方 Moodle 附加组件的要点。插件管理包括安装、更新和删除;对于每个操作,我们提供了四种方法:网络界面、手动、Git 和命令行。
之后,我们提供了一些关于好插件和不太好的插件的建议。我们提供了一些你可能想要应用的插件评估标准,介绍了一些流行的插件,并给你列出了一些你应该考虑的组织决策。
你可能已经体验到了 Moodle 可用附加功能的广度和深度。它展示了开源软件的可扩展性和显著优势,即根据用户需求编程增强系统。插件实施的一致性展示了 Moodle 的模块化架构,并在未来添加并管理额外模块时简化了学习曲线。
现在,让我们继续配置 Moodle 插件。由于可用的插件数量众多,我们将这个主题分为两章:教育配置和技术配置。
第九章:配置教育功能
Moodle 支持一系列需要管理员注意的工具和功能,有些只需要一次,有些则需要定期。由于配置区域数量众多,我们将主题分为教育和技术配置,每个都由专门的章节代表:

图 9.1 – 教育配置主题
本章处理配置教育设置。因此,我们将涵盖以下主题:
-
配置协作工具
-
配置内容创建功能
-
配置成绩和评估
-
管理技能和激励
配置教育设置通常需要来自领域专家的输入,例如课程规划者、内容创建者或评估者。与这些专家保持联系以确保 Moodle 系统的最佳设置已被证明是有益的。
到本章结束时,您应该能够向同事提出正确的问题,并实施他们的要求。
配置协作工具
Moodle 的许多优点之一是其内置的对学习者和教师之间协作的支持。这包括几个协作课程活动,如论坛、维基、词汇表和数据库,以及在组模式下运行活动的功能,以及对分组的支持。此外,Moodle 中有三种社交工具需要管理员进行配置:博客、评论和标签。我们将在以下小节中讨论这些内容。
配置博客
Moodle 提供给用户的一个博客机制允许他们创建与课程相关的个人和公开条目和帖子。
重要提示
博客是用户表达自己的方式,无论是以学习日志的形式还是作为个人事件的个人账户。
作为管理员,您必须确保在网站管理 | 常规 | 高级功能中启用博客被打开。接下来,您应该导航到网站管理 | 外观 | 博客来配置以下设置,这些设置适用于所有博客用户:

图 9.2 – 配置博客
您应该仔细检查以下四种类型的设置:
-
moodle/blog:associatecourse和moodle/blog:associatemodule功能。 -
博客可见性:您在这里的选择取决于您组织的政策以及博客作为学习过程一部分的使用方式。
-
外部博客:Moodle 支持外部博客,如 WordPress 博客。如果启用,用户可以通过偏好设置菜单中的注册外部博客链接链接外部博客。条目将显示为似乎已在 Moodle 博客中输入,但不能进行修改。
-
博客评论:如果启用,其他人可以对博客文章进行评论;例如,教师可以在日记条目上留下私人或公开的反馈。您还可以进一步指定是否应显示评论计数。
我们刚刚在博客中遇到了评论,这是第二个需要配置的协作工具。
配置评论
Moodle 附带了一个通用的评论功能,与博客工具中的功能独立。它允许您在任何系统上下文中放置评论块,例如在课程或单个活动中。
重要提示
评论是可以附加到各种 Moodle 工件上的备注。
此功能默认启用,但可以通过站点管理 | 常规 | 高级功能下的启用评论参数进行禁用。
有几个区域可以设置额外的评论相关设置;例如,当它们包含在备份中或由某些活动支持时。您还可以通过转到报告 | 评论来查看报告,您将看到系统中的所有评论。您可能需要经常检查,以防有任何冒犯或不适当的内容被输入。
您可以使用搜索框搜索评论来查看这些设置。像往常一样,这些选项可以通过相应的角色能力在本地进行覆盖。
Moodle 中的第三个也是最后一个协作活动是标签,我们将在以下小节中处理。
配置标签
标签是将关键词用于描述工件或用户的过程。然后利用这些标签进行搜索、共享和执行各种协作活动以匹配兴趣。
重要提示
标签是将关键词用于描述工件或用户的过程。
用户创建代表他们个人或教育兴趣的标签。然而,作为教育机构,您可能希望创建全站标签,这些标签可以与用户定义的标签一起使用,甚至限制标签为一系列标准标签。全局标签的例子包括与组织相关的关键词、您的实体专长的主题、公司运行的宣传活动以及与您的机构相关的新闻价值主题。
就像博客和评论一样,标签可以通过站点管理 | 常规 | 高级功能下的启用标签功能参数在整个站点上启用(默认)和禁用。以下图表说明了标签在 Moodle 中的组织方式:

图 9.3 – Moodle 标签
标签组织在标签集合中。一个标签属于一个集合;一个标签不能属于多个集合。有几个预定义的标签区域,每个代表支持标签的 Moodle 功能。每个标签区域都有一个相关的标签集合;一个标签集合可以与多个标签区域关联。要查看标签、标签区域和标签集合的实际操作,请导航到网站管理 | 外观 | 管理标签,在那里你会看到以下内容:

图 9.4 – 管理标签 I
屏幕顶部有两个标签集合,其中一个是通过添加标签集合链接添加的。要将标签集合与标签区域关联,你需要在标签区域表的相关列中选择它。标准标签使用设置指示在标签区域输入标签时如何处理标签:它们可以在开始输入时提出(建议),只能选择标准标签(强制),或者不显示任何标签(不推荐)。
禁用标签区域(通过标准眼睛符号)将完全隐藏此组件的打标签功能。例如,当关闭用户兴趣中的标签时,相应的条目将不再出现在用户资料中。
当你选择一个标签集合的名称时,你将看到该集合中所有的标签:

图 9.5 – 管理标签 II
对于每个标签,以下设置/操作都是可用的:
-
标签名称:当选择时,你会看到哪些用户被标记了这个标签。
-
名字/姓氏:标签创建者。
-
计数:这是标签在整个网站上被使用的次数。这将被用作标签块中标签云大小的依据。
-
标记:这显示了标签是否被标记为不适当,以及括号中的次数。
-
修改时间:这显示了标签最后被编辑的时间。
-
标准:标准标签对所有用户可用。
-
编辑:你可以更改标签的名称,更改其描述,并选择任何相关标签。
-
删除:这将从系统中删除该标签。
你可以通过添加标准标签链接添加标准标签。如果你发现任何应该合并的标签,例如当标签名称拼写错误时,请使用合并所选按钮并选择应该保留的标签。
如果你需要阻止用户打标签,你需要创建一个单独的角色并调整两个相关的能力,moodle/tag:create 和 moodle/tag:edit。如果你想保留用户创建标签时的原始大小写,确保在网站管理 | 常规 | 安全 | 网站安全设置下勾选了保留标签名称大小写。
这就结束了关于配置标签的子节,因此也结束了关于管理协作 Moodle 工具的章节。接下来是配置内容创建者所需的功能。
配置内容创建功能
课程作者高度依赖他们可获得的内容创建工具。Moodle 允许您使用内置工具创建内容,从外部应用程序中整合内容,并在内容项之间添加结构和条件。
在本节中,您将学习如何配置不同的内容创建功能,即内容库和 H5P、LTI 平台和工具、过滤器、抄袭预防以及许可证。首先,让我们配置一些通用的内容创建设置。
配置内容创建设置
一些网站范围的设置会影响内容创建,如下所示:
-
要求活动描述:活动和资源默认不需要描述。为了强制执行描述性解释,您必须在网站管理 | 插件 | 活动模块 | 通用活动设置中启用该参数。
-
完成跟踪:课程和活动完成允许作者为活动和课程设置完成标准。建议在网站管理 | 常规 | 高级功能中启用此功能,您还可以在此找到默认完成跟踪选项。
-
限制访问:在 Moodle 课程内,课程作者可以限制对单个活动或资源的访问。可以通过导航到网站管理 | 插件 | 可用性限制 | 管理限制来配置可用的限制类型:

图 9.6 – 管理可用性限制
您只能选择显示和隐藏每个限制;默认情况下,所有插件都已启用。某些限制需要其他元素存在或配置。例如,只有当组在特定课程中存在时,组别和分组才会出现在课程的访问限制中。请确保在网站管理 | 常规 | 高级功能中已开启启用受限访问。
一个流行的第三方可用性限制是按语言限制(moodle.org/plugins/availability_language),它将在第十章 管理本地化部分的配置技术功能中更详细地描述。
- 隐形活动:这些活动是可用的但不可见的,之前被称为孤儿活动。如果课程创建者希望隐藏活动并从其他地方提供链接,例如页面资源或文本块,这些活动很有用。
每个活动或资源在网站管理 | 插件 | 活动模块中都有一个设置页面。大多数设置是默认值,如果适用,通常还会伴随以下附加值状态:
-
启用:如果设置,则标准设置将被勾选;否则,将取消勾选
-
高级:如果设置,教师必须选择显示更多…链接才能查看它们,这适用于不常使用的设置
-
锁定:如果设置,教师无法更改设置;例如,如果您希望在整个系统中强制所有活动的描述
以下是从作业活动中摘录的示例,其中显示了右侧的所有三个状态:

图 9.7 – 启用、高级和锁定状态
一旦您检查并配置了这些通用课程和活动设置,我们就可以配置内容库(特别是 H5P)。
配置内容库和 H5P
H5P 允许课程创建者创建、分享和重用丰富、交互式且移动友好的 HTML5 内容。在 Moodle 中,已实现内容库以整合 H5P 内容,如下图所示:

图 9.8 – 内容库和 H5P
Moodle 支持内容集成的概念,其中每个集成都表示为一个单独的实体。在撰写本文时,仅实现了单个内容集成 – H5P。前往网站管理 | 插件 | 内容库 | 管理内容类型以管理内容集成。预计未来将在 moodle.org/plugins/?q=type:contenttype 发布更多类型。
每个内容集成包含一个或多个内容类型,其中每种类型代表一个功能。在 H5P 的情况下,您可以通过访问网站管理 | 常规 | H5P | 管理 H5P 内容类型来查看所有可用的内容类型:

图 9.9 – H5P 内容类型
H5P 内容可以通过不同的方式嵌入到课程中:
-
直接通过 H5P 活动:确保在网站管理 | 插件 | 活动模块 | 管理活动中启用了活动。
-
在通过 Atto 编辑器编写的文本中:确保在网站管理 | 插件 | 文本编辑器 | Atto HTML 编辑器 | Atto 工具栏设置中安装了插入 H5P 插件。
-
使用表示 H5P 内容的 URL(默认情况下,来自 h5p.com):必须在网站管理 | 插件 | 过滤器 | 管理过滤器中启用显示 H5P 过滤器。
-
.h5p存储在此。 -
从存储库中:H5P 内容是从存储库中复制或链接的。有关更多详细信息,请参阅第十章的配置 技术功能部分中的管理存储库。
在网站管理 | 常规 | H5P | H5P 概览中有一个简短的清单,其中包含到相应配置页面的链接,如下面的截图所示:

图 9.10 – H5P 概览
我们已经提到了前两个条目;最后一个条目 – *,触发cron.php,并将任何更改恢复到默认值。关于任务的内容将在第十五章的计划任务部分进行详细说明,优化 Moodle 性能。如果无法使用此计划任务,那么网站管理 | 常规 | H5P | 管理 H5P 内容类型允许您手动上传必要的文件。
H5P 代表在 Moodle 中存储、编辑和创建的交互式内容。另一种类型的内容集成是 LTI,将在下一个小节中讨论。
配置 LTI 平台和工具
根据 IMS,学习工具互操作性(LTI)是一个学习工具互操作性的标准,允许远程工具和内容集成到学习管理系统。Moodle 支持已弃用的 LTI 版本和最新的LTI Advantage(核心 LTI 1.3 捆绑了一些基本服务)。Moodle 可以作为 LTI 平台(外部内容可以在 Moodle 中使用)和 LTI 工具(Moodle 内容可以在其他 LTI 平台中使用)。
重要提示
旧版 LTI 使用术语消费者和提供者,而 LTI Advantage 使用平台和工具。
我们将使用这些新术语,从 Moodle 作为 LTI 平台操作开始。
Moodle 作为 LTI 平台
为了使 Moodle 作为 LTI 平台,课程作者必须使用外部工具活动。以下图表展示了 Moodle(LTI 平台)和外部系统(LTI 工具)之间简化的数据流:

图 9.11 – Moodle 作为 LTI 平台 I
工具必须通过 URL 和一些凭证连接到 Moodle;后者可以是一个消费者密钥/共享密钥对、RSA 密钥或密钥集 URL。一旦建立连接,学习内容将通过上述外部工具活动嵌入。可能还会传输其他数据,通常是结果,通常会在成绩册中本地存储。
作为管理员,您必须配置外部内容提供者,这些提供者将随后出现在课程内的活动中的预配置工具下拉菜单中。前往网站管理 | 插件 | 活动模块 | 外部工具 | 管理工具,在这里您有多种选项来添加新的提供者:
-
添加 LTI Advantage:如果提供者支持此工作流程,请输入 工具 URL;您将被引导到工具注册页面,在那里您将完成注册步骤。
-
添加旧版 LTI:Moodle 支持已弃用的 LTI 版本;根据当前版本,可能需要提供密钥/密钥对(版本 1.1),或者启动类似于 LTI Advantage 的注册过程(版本 2.0)。
-
手动配置工具:如果前两种选项都不起作用,您必须手动提供工具参数。外部工具设置在 docs.moodle.org/en/External_tool_settings 上有很好的文档说明。
添加的工具将首先处于待定状态,这允许您审查工具配置和授予的隐私和服务,并在通过 管理预配置工具 链接激活工具之前进行可能的修改。
重要提示
要使工具在活动选择器中作为一个单独的项目出现,将 工具配置使用 设置更改为 在活动选择器中显示并作为 预配置工具。
在我们的演示系统中,已经成功注册了两个 LTI 工具:

图 9.12 – Moodle 作为 LTI 平台 II
现在我们已经配置 Moodle 作为 LTI 平台,让我们看看相反的情况,即 Moodle 是 LTI 工具,为其他系统提供内容。
Moodle 作为 LTI 工具
对于 Moodle 作为 LTI 工具运行,了解外部平台(LTI 消费者)和 Moodle(LTI 生产者)之间的简化数据流至关重要,如下所示:

图 9.13 – Moodle 作为 LTI 工具 I
LTI 工具和 LTI 平台必须相互注册;它们实际上签订了一个安全合同,允许两个系统之间的通信和数据交换。内容(整个课程或单个活动)以及可选的成绩由 LTI 工具共享,并在 LTI 平台上使用。当两个 LTI 站点都是 Moodle 系统时,此过程与 Moodle 作为 LTI 平台的工作流程相同。为了使 LTI 平台的用户能够访问 LTI 工具中发布的内容,必须激活身份验证和注册机制。这两个步骤以及启用 Moodle 作为 LTI 工具的进一步配置在此处概述:
-
前往 网站管理 | 插件 | 身份验证 | 管理身份验证 并启用 LTI 插件。
-
前往 网站管理 | 插件 | 注册 | 管理注册插件 并启用 发布为 LTI 工具。在插件设置中配置用户默认值,使用您的详细信息。
-
前往 网站管理 | 插件 | 注册 | 发布为 LTI 工具 | 工具注册 并选择 注册 平台。
提供名称后,Moodle 将自动生成工具详情,这些详情必须输入到 LTI 平台中。一旦在平台上设置了工具,必须在平台详情选项卡上记录详细信息以完成注册。对于动态注册,这些信息将自动输入;对于手动注册,必须手动复制并输入。
在以下截图的右侧,我们注册了两个平台(一个激活状态和一个待定状态)。您可以在左侧看到动态注册和手动注册的工具详情:

图 9.14 – Moodle 作为 LTI 工具 II
-
在课程内,教师可以通过发布为 LTI 工具发布内容(整个课程或单个活动)。在这里,必须配置成绩和用户同步。用户同步模式决定了如何处理远程用户的注册。
-
当远程用户首次访问共享活动或课程时,Moodle 将使用现有账户或创建新账户。如何执行此用户账户配置(自动或用户提示)由教师首次启动配置模式和学生首次启动 配置模式中的设置决定。
当教师在执行步骤 4和步骤 5时,他们通常需要帮助完成这一部分技术性的程序。前面的列表只是粗略地概述了使用动态注册时 LTI 工具的设置步骤。在docs.moodle.org/en/Publish_as_LTI_tool上,您可以找到关于其他 LTI 设置的非常详细的文档,例如手动注册、共享访问和用户配置,以及关于遗留 LTI 的信息。
小贴士
建议通过访问站点管理 | 常规 | 安全 | HTTP 安全启用允许框架嵌入设置,以便工具在框架内显示而不是在新窗口中。
LTI 是一个强大的标准,它使您的 Moodle 系统能够对外部内容进行访问和授权。我们将在下一节中介绍过滤器,它们会转换您 Moodle 实例中的内容。
配置过滤器
过滤器会扫描通过 Atto 编辑器输入的任何文本,并将其自动转换为不同的形式,通常是更复杂的形式。例如,术语表中的条目或概念会在文本中自动创建超链接,指向 MP3 文件的 URL 将变成嵌入的音频播放器,数学方程式将以视觉公式表示,上传的视频将提供播放控制,等等。
Moodle 提供了几个过滤器,可以通过导航到站点管理 | 插件 | 过滤器 | 管理过滤器来访问:

图 9.15 – 过滤器配置
默认情况下,所有过滤器都是禁用的。您可以通过更改 moodle/filter:manage 能力来启用它们,该能力默认允许 管理员 和 教师 角色。
应在 LMS 中以及大多数用户使用的过滤器上启用。典型的候选者包括 多媒体插件、显示 H5P、将表情符号显示为图像 和 多语言内容。仅由一些用户使用的过滤器不应激活,但应在本地提供,例如 TeX 符号,以处理数学或科学符号。启用的过滤器也可能在活动级别暂时关闭,例如在线考试中的 术语表自动链接。激活某些过滤器可能会触发编辑器按钮的出现,例如 将表情符号显示为图像(表情符号选择)或 TeX 符号(方程式编辑器)。
您可以使用 顺序 列中的上下箭头更改过滤器应用于文本的顺序。如果某个过滤器不起作用,请尝试将其向上移动列表。
重要提示
过滤机制按先到先服务的原则操作;如果过滤器检测到需要转换的文本元素,它将在应用下一个过滤器之前进行转换。
每个过滤器都可以配置为应用于 内容和标题 或仅 内容;也就是说,过滤器将忽略活动模块的名称。
重要提示
将过滤器应用于标题以及内容可以显著增加服务器的负载,因此请谨慎使用。
一些过滤器提供设置,这些设置要么指示过滤器应应用于哪种文本格式,要么是特定于过滤器的;后者在各自的 Moodle Docs 中有详细描述。除了过滤器特定的设置外,Moodle 还提供了一些所有过滤器共用的设置。这些设置可以通过 网站管理 | 过滤器 | 通用过滤器设置 访问,如下所示:
-
过滤器上传的文件:默认情况下,只有通过 Moodle 编辑器输入的文本被过滤。如果您希望包括上传的文件,您可以从 仅 HTML 文件 和 所有 文件 选项中选择任何一个。
-
过滤器对页面匹配一次:如果过滤器应在找到匹配项后停止分析文本,请启用此设置;即,只有第一次出现将被转换。
-
过滤器对文本匹配一次:如果过滤器应只为每个页面上的每个文本项中找到的第一个匹配文本实例生成单个链接,请启用此设置。如果启用了 过滤器对页面匹配一次 参数,则此设置将被忽略。
-
过滤器在系统上下文中的导航:过滤器是上下文相关的,当启用标题过滤时可能会引起性能问题。选择此选项应减少对页面的过滤操作次数。
以下图表总结了如何应用过滤器,考虑了过滤器的顺序、匹配方式和过滤器应用于哪些文本(内容和标题或仅内容):

图 9.16 – 应用过滤器
过滤器 1 已关闭匹配(所有匹配项都被转换)并应用于内容和标题。过滤器 2 已开启匹配(只有第一个匹配项被转换)并且仅应用于内容;也就是说,标题中的匹配文本被忽略。
抄袭预防是内容创建主题列表中的下一个(长)需要管理员注意的话题。
配置抄袭预防
抄袭预防背后的理念是检查学生提交的内容与其他人的工作之间的重叠程度——重叠度越高,内容被抄袭的可能性就越大。这种检测可以是针对 Moodle 中的用户内容或通过公共资源。
必须通过在站点管理 | 常规 | 高级功能中选择启用抄袭插件参数来启用抄袭预防。一旦这样做,您可以在导航到站点管理 | 插件 | 抄袭 | 管理 抄袭插件时访问任何已安装的抄袭预防插件。
在撰写本文时,大约有十几个插件可在 moodle.org/plugins/?q=type:plagiarism 上找到,用于抄袭预防。最受欢迎的两个是 Turnitin 和 Ouriginal(之前称为 Urkund)。这两个系统都是商业工具,需要付费订阅。一旦安装和配置,抄袭预防功能将作为课程内作业和论坛模块的一部分提供。
另一个需要在站点和组织之间达成一致的话题是您的 Moodle 系统中可用的许可证;这是下一小节的主题。
管理许可
在通过文件选择器添加文件时可以选择许可证。然后,此信息将被附加到文件的元数据中。要配置用户可用的许可证,请转到站点管理 | 常规 | 许可证 | 许可证管理器,其中列出了所有可用的许可证:

图 9.17 – 管理许可
您可以通过创建许可证按钮创建新的许可证,在那里您必须提供以下信息:
-
许可证简称:内部许可证名称
-
许可证全名:显示许可证名称
-
许可证来源:可以找到许可证条款和条件的位置的 URL
-
许可证版本:正在使用的许可证版本的发布日期
许可证管理器可以手动编辑和删除添加的许可证;随 Moodle 一起提供的许可证则不能。除了默认站点许可证外,所有许可证都可以被禁用(隐藏)。
重要提示
附在上传文件上的许可证不会影响其可见性;它只是在其他地方重新使用时创建默认值。
您可以在“网站管理” | “常规” | “许可证” | “许可证设置”下选择“默认网站许可证”。默认情况下,用户最后选择的许可证在通过文件选择器上传文件时会被预先选中。如果禁用了“记住用户许可证偏好”设置,则默认网站许可证会被预先选中。
这部分关于内容创建功能的介绍到此结束,我们涵盖了配置内容库和 H5P、LTI 平台和工具、过滤器、抄袭预防以及许可证。到目前为止,我们忽略了一种特定类型的内容——评估及其评分,这将在以下专门章节中进行介绍。
配置成绩和评估
除了学习本身之外,评估在教育环境中是一个关键要求。Moodle 提供了一系列工具来促进形成性、中间和总结性评估,并处理随之而来的不可避免的成绩。
在我们处理评估之前,我们将在此部分介绍成绩册的管理元素,其中我们将介绍如何配置作业、测验和问题库以及 SCORM 包。
配置成绩和成绩册
成绩册是任何 LMS 中最重要结构之一,Moodle 也不例外。Moodle 成绩册是一个强大、灵活且准确的成绩管理系统。其灵活性和可定制性导致了一个非常高的复杂度。因此,您有相当多的管理设置可供使用,这些设置会影响教师、培训师和评估者在整个系统中使用成绩的方式。
大多数参数都与成绩册紧密相关,并且课程级别的教师处理相关的报告。对于您的组织,应实施关于成绩默认值和全局设置的网站范围协议。
重要提示
成绩册是一个容器,用于存储 Moodle 中所有学习者的成绩。
成绩是成绩册中的一个条目。
以下是对成绩和所有相关成绩册元素的高级概述:

图 9.18 – 成绩和成绩册
此外,每个设置的在线帮助都非常全面,正如在 Moodle 文档中的docs.moodle.org/en/Grader_report所提供的配套区域一样,该区域包含了几页专门针对管理员的页面。我们只会简要描述“成绩”标签中的每个元素,并突出一些关键参数,如下所示:
-
常规设置: 这些参数影响成绩册和成绩。启用发布(通过外部 URL 发布结果的能力)是一个默认关闭的设置,并且需要定期启用。另一个经常更改的设置是导航方法,其中大多数用户更喜欢标签页选项,因为它与 Moodle 的其他部分保持一致。
-
评分类别设置: 成绩被组织到类别中;您可以在这里设置相关设置。可以通过成绩册的汇总系统利用不同的评分策略,例如总分或百分比类别。
-
评分项设置: 这些是影响单个成绩和评分项的设置。
-
评分标准: 在这里,您可以指定用于评分和评级的全局评分标准。全局评分标准通常与您组织提供的资格认证相关联。
-
成果: 成果被大多数职业教育和一些学术课程用于指定正在教授的学科预期的能力或目标。必须通过访问网站管理 | 常规 | 高级功能来启用成果。大多数组织更喜欢使用更强大的能力而不是成果。
-
信件: 许多教育体系使用字母(A,A-,B+,……,以及 F)来评定项目。在这里,您指定哪个百分比范围对应哪个评定字母。
Moodle 附带几个预定义的成绩册报告。报告设置确定报告的外观和内容。如果安装了额外的用户定义报告(插件),则此列表可能为每种报告类型(有关创建自定义报告的良好教程,请参阅docs.moodle.org/dev/Gradebook_reports)提供一个单独的配置页面。不同的报告类型如下:
-
评分者报告: 此设置包括是否显示计算、显示或隐藏图标、列平均值等。教师可以在我的报告****首选项标签中覆盖大多数设置。
-
成绩历史: 成绩册跟踪对成绩册条目所做的所有更改。在这里,您可以指定页面上将显示多少条目。您可以通过访问网站管理 | 服务器 | 清理来禁用成绩历史。在同一页上,您还可以指定成绩历史应保留的时间长度(成绩****历史寿命)。
-
概览报告: 这包括两个设置,分别确定是否显示排名信息以及如何处理包含隐藏成绩的总数。
-
用户报告: 这显示了确定是否显示排名信息和如何处理隐藏项目的设置。
我们只是简要介绍了成绩册的定制选项,因为完整成绩册管理在很大程度上取决于您组织部署的评分策略。
接下来,我们将处理管理 Moodle 中最常用的三种评估工具:作业、测验和 SCORM。
配置作业
根据 MoodleDocs,作业活动允许学生将作业提交给教师进行评分。以下图表显示了简化的作业工作流程:

图 9.19 – 作业工作流程
作业工作流程包括以下三个步骤:
-
当教师设置作业时,必须提供一系列作业设置,包括说明(什么)、各种可用日期(如开始日期、截止日期和截止日期)(何时)、提交类型、提交设置以及是否支持小组提交(如何),以及各种其他设置,例如通知。
-
学生将通过所需的提交类型之一提交他们的工作:在线文本、上传的文件(夹)和/或辅助评论。
-
最后,教师将通过支持的渠道之一提供反馈:评论、PDF 批注、离线评分表和通过文件提供的反馈。如前所述,任何给定的分数将自动转移到学生的成绩册以供审查。
需要管理员输入的元素包括作业设置、提交插件和反馈插件:
-
作业设置:在网站管理 | 插件 | 活动模块 | 作业 | 作业设置中,您应根据您的权限要求指定字段 - 例如,提交语句的措辞。在屏幕的第二部分,您可以指定作业活动的默认值。
-
提交插件:激活的提交插件决定了学生如何提交他们的工作。默认情况下,可用的选项包括在线文本、文件和评论。要配置每种类型,请转到网站管理 | 插件 | 活动模块 | 作业 | 提交插件 | 管理作业提交插件。
-
反馈插件:激活的反馈插件决定了教师如何评分、评级和评论提交的作业。默认情况下,可用的选项包括评论、PDF 批注、离线评分表和文件。要配置每种类型,请转到网站管理 | 插件 | 活动模块 | 作业 | 提交插件 | 管理作业提交插件。
可以在 moodle.org/plugins/?q= type:assignfeedback 和 moodle.org/plugins/?q=type:assignsubmission 分别找到额外的提交和反馈插件。还可以安装其他插件,将上传的作业提交转换为 PDF 格式,以便教师进行批注。可用的转换器列表可在 站点管理 | 插件 | 文档转换器 | 管理文档转换器 中找到。在撰写本文时,有两个 文档转换器 作为标准插件可用:Google Drive(需要启用 OAuth 2 Google 服务)和 Unoconv(需要在服务器上安装 Unoconv)。
重要提示
为了使 PDF 注释正确工作,必须在 站点管理 | 服务器 | 系统路径 中设置 ghostscript 路径。
Moodle 中第二受欢迎的评估模块是测验活动,这是以下小节的主题。
配置测验
测验活动使教师能够创建包含各种类型问题的测验,包括多项选择、匹配、简答题、数值题和拖放题。
创建测验是一个两步过程。在第一步中,内容作者将问题填充到题库中。在第二步中,教师创建测验活动,设置其选项以指定与测验交互的规则,并从题库中添加问题。
重要提示
Moodle 将用于测验的问题存储在题库中。在题库中,问题被组织到类别中。
学习者可以在标准浏览器中参加测验,如果配置了,也可以在安全考试浏览器中参加。指定的问题行为决定了提交的问题如何处理。评分自动进行(除了论文类型问题),结果按常规推送到成绩册。以下图表显示了简化的测验工作流程:

图 9.20 – 问答流程
此过程的两个部分需要管理员进行配置:定制题库和测验活动以及启用安全考试浏览器。
定制题库和测验活动
Moodle 拥有一个功能强大的问题引擎,支持广泛的功能、问题类型和问题行为。这三个元素可以分别配置:
-
题库功能:在 站点管理 | 插件 | 题库插件 | 管理题库插件,您可以查看所有可用的题库功能。如果需要,您可以更改列排序顺序并添加问题自定义字段。
-
问题类型:在 站点管理 | 插件 | 问题类型 | 管理问题类型,您应该禁用任何未使用的问题类型,并可能需要更改多项选择题的默认值。
-
试题行为:在网站管理 | 插件 | 试题行为 | 管理试题行为中,你应该隐藏任何在您的组织中未使用的处理提交问题的方法。
在以下图中,你可以(希望)看到三个与问题相关的元素的部分:

图 9.21 – 试题库插件、试题类型和试题行为
在真正的 Moodle 风格中,所有三个结构都作为插件处理,并且可以向系统中添加额外的试题库插件、试题类型和试题行为。
还有一个设置你应该查看,即在网站管理 | 插件 | 活动模块 | 测验 | 常规设置中的自动保存延迟参数。指定的值决定了学生在测验尝试期间工作自动保存的频率。
重要提示
短暂的自动保存延迟会增加服务器负载,但减少了学生丢失工作的可能性。
此屏幕上的所有其他设置都是测验活动的默认值,无需进一步解释。安全考试浏览器通常在测验用于考试时使用,如以下小节所述。
启用安全考试浏览器
测验活动常用于考试。根据物理设置和考试的重要性,可能需要不同级别的安全性。测验活动在尝试的额外限制部分提供一些内置设置:
-
要求密码:在授予测验访问权限之前必须输入密码
-
要求网络地址:测验访问权限仅限于您局域网或互联网上指定的 IP 地址(们)
-
浏览器安全:当启用全屏弹出带有一些 JavaScript 安全选项时,测验只能在启用 JavaScript 的浏览器中运行,以全屏显示,并且在技术上可能的情况下,禁止某些操作,如复制和粘贴
如果这些设施不足以满足特定的考试设置,无论是基于课堂的还是在线监考的,Moodle 提供安全考试浏览器(SEB)支持。根据其网站safeexambrowser.org,SEB 如下:
“一个安全的网络浏览器环境来执行电子评估。该软件将任何计算机临时转变为安全工作站。它控制对系统功能、其他网站和应用程序等资源的访问,并在考试期间防止使用未经授权的资源。”
以下示意图显示了 SEB 与 Moodle 的架构和组件(部分借鉴自safeexambrowser.org):

图 9.22 – 安全考试浏览器架构和组件
亭台应用锁定电脑或平板电脑,并启动 SEB 以及可选的第三方应用程序。配置文件指定浏览器的行为,例如禁用功能,如快捷键、停止音频或隐藏屏幕元素,以及可以启动哪些外部应用程序。SEB 浏览器使用预设的 URL 加载并显示 Moodle 测验,并隐藏任何导航元素,如地址栏、搜索引擎字段等。SEB 插件是 Moodle 的扩展,用于简化 SEB 与测验活动之间的交互。
从 Moodle 管理员的角度来看,您需要配置以下组件以确保测验的 SEB 支持:
- 安全考试浏览器模板:一个 SEB 模板实际上是一个配置文件。创建 SEB 文件的最简单方法是创建一个测验,手动配置 SEB 设置,然后下载配置文件。然后,转到网站管理 | 插件 | 活动模块 | 测验 | 安全考试浏览器模板,在那里您可以创建新的模板(使用下载的 SEB 文件)并管理现有的模板:

图 9.23– 安全考试浏览器模板
任何启用的 SEB 模板都将可在测验活动中使用。
- 安全考试浏览器访问规则:在网站管理 | 插件 | 活动模块 | 测验 | 安全考试浏览器访问规则中,您可以指定几个通用 SEB 设置,所有这些设置都在docs.moodle.org/en/Safe_Exam_Browser中得到了很好的文档记录。
重要提示
SEB 要求学生在自己的电脑或平板电脑上下载浏览器。在重要考试前几分钟进行试运行,以避免恐慌发作是推荐的。
Moodle 中第三种流行的评估模块是 SCORM 活动,这是下一个小节的主题。
配置 SCORM
可共享内容对象参考模型(SCORM)是跨不同学习管理系统交换学习对象的既定标准。像作业和测验一样,SCORM 包通过专用活动集成到课程中。与其他两种评估工具不同,SCORM 活动需要很少的管理员配置。
在网站管理 | 插件 | 活动模块 | SCORM 包中,有两种类型的参数:
-
默认设置:这些已被分为三个类别(显示、评分和其他),并在docs.moodle.org/en/SCORM_settings中详细描述。
-
管理员设置:前四个设置直接影响用户可用的功能,并且默认情况下都是禁用的。SCORM 标准模式强制与版本 1.2 的严格兼容性,而其他三个设置允许/禁止不同类型的包:

图 9.24 – SCORM 配置
剩余的行政设置显示内部数据(会话、超时、用户 ID)或调试功能。只有当您的用户在使用 SCORM 包时遇到技术问题时,才调整这些设置。
这完成了关于配置作业、测验和 SCORM 的设置部分。其他活动被归类为教育性活动,如书籍、数据库、研讨会和词汇表,这里没有涉及。几乎所有行政设置都是默认值、外观设置或文件上传限制。Moodle 管理员棘手的工作是找到所有员工对这些参数达成共识。我们建议除非有具体要求调整它们,否则将这些与活动相关的设置保留在默认值。
技能和激励与评估密切相关,我们将在下一节中讨论。
管理技能和激励
技能和激励是每个评估策略的核心。由于 Moodle 是现代学习环境的一个战略构建块,我们认为这两个概念值得一个专门的章节。
重要提示
技能是执行特定动作以解决给定问题的能力。在 Moodle 中,技能以能力的形式表示。
激励是获取技能的动机。在 Moodle 中,激励以成绩、反馈、徽章和证书的形式表示。
我们现在将重点关注 Moodle 提供的三个技能和激励工具,如下所示:

图 9.25 – Moodle 技能和激励
图表左侧部分涵盖了不同级别(如活动和课程,或 Moodle Workplace 中的项目和认证)的完成情况,以成就的形式呈现。各种组件支持一系列奖励机制;例如,在测验中获得一定数量的分数后附加一个能力,完成课程时颁发一个徽章,或在完成项目后颁发证书。
本节重点介绍上述组件(能力、徽章和证书)的行政任务。
管理能力
能力描述了学习者在特定学科相关技能中的熟练程度或理解水平。Moodle 拥有强大的能力管理功能,完全支持建模和颁发能力。能力的主要组件和颁发机制如下图表所示:

图 9.26 – Moodle 能力
能力具有特定的属性,例如名称、尺度(例如,不具备能力、在指导下具备能力、具备能力),所属的能力框架,以及用于构建能力层级的父能力。能力通常与课程和/或活动的完成情况相关联。能力可以是分配给用户或群体的学习计划(模板)的一部分。Moodle 支持不同的奖励机制,即完成后的自动奖励,在提供额外证据后的审查过程,或手动奖励。在 Moodle Workplace 中,能力也可以通过动态规则进行奖励,其中能力可以通过规则操作进行配置。
关于能力的详细信息可以在docs.moodle.org/en/Competencies找到。我们将重点关注如何建模能力和配置奖励机制的主要机制,因为这是在网站范围内进行的,因此需要管理员权限。
我们将使用欧洲共同参考框架(CEFR)作为示例能力框架,因为它在欧洲以及越来越多的其他国家被用来衡量学习者的语言技能集。首先,您需要在站点管理 | 常规 | 能力 | 能力框架处创建一个能力框架,如下面的截图所示:

图 9.27 – 能力框架
为了简化,我们已经从公共 Moodle能力框架存储库(通过顶部的相应按钮)导入了CEFR框架。以下截图显示了框架及其能力(A1、A2、B1、B2、C1和C2),以及其子能力:

图 9.28 – CEFR 能力框架
一旦在能力框架中建模了能力,下一步就是配置如何奖励用户,一旦他们熟练掌握了要获得的能力。关于如何奖励学习者能力有两种选择:
- 通过课程和活动完成,通过完成定义的任务来实现熟练度。最直接的选择是能力完成,这标志着用户实现能力的流程结束。附加证据允许用户提交在 Moodle 之外接受的培训的证明 – 例如,指向公开网络研讨会或外部研讨会参与证书的链接。最后一个选择是学习者请求指导员的审查。
作为管理员,您不需要配置课程和活动完成情况,因为教师或课程作者会这样做。所需的所有内容都是能力框架内的上述能力。
- 通过学习计划,确保用户群体达到胜任力水平——例如,所有数据保护官员。学习计划是一种确保所有学习者基于他们的目标和培训需求进行有针对性的学习,并且以基于学习计划模板的结构化方式提供,这些模板本身基于胜任力。您可以根据学习计划模板创建学习计划,无论是手动为单个用户创建,还是通过群体自动创建。
重要提示
学习计划模板定义了一组分配给用户的胜任力。
前往网站管理 | 常规 | 胜任力 | 学习计划模板,并选择添加新学习计划模板按钮以添加学习计划模板。我们已经创建了一些模板,如下面的截图所示:

图 9.29 – 学习计划模板
当您选择学习计划模板时,您将看到已经熟悉的胜任力视图,并且还有通过添加胜任力到学习计划模板按钮添加更多胜任力的选项。
一旦学习计划模板完成,您可以通过编辑菜单中的创建学习计划选项逐个创建个人学习计划,或者通过添加群体以同步自动创建。用户可以通过他们各自的用户资料中的学习计划链接查看他们的学习计划,在那里他们也有提供先前学习证据的选项——例如,先前学习的文件记录。
Moodle Workplace 通过动态规则支持第三种选项,根据灵活的准则颁发胜任力,例如群体成员资格。这种颁奖机制在docs.moodle.org/en/Dynamic_rules中有详细描述。
这就结束了我们对 Moodle 强大且灵活的胜任力实施的快速概述,其中包括了建模胜任力框架和通过活动和课程完成以及通过学习计划配置颁奖机制。接下来是第二种激励类型:徽章。
管理徽章
徽章是庆祝成就和展示学习进步的好方法。Moodle 允许您管理徽章,并提供不同的方式来颁发徽章。Moodle 徽章与 Open Badges 完全兼容,并可以发布在任何 Open Badges 兼容的背包中。
徽章是根据各种选择的准则颁发的,并将显示在用户的个人资料上。徽章的主要组成部分和颁发机制在以下图中展示:

图 9.30 – Moodle 徽章
徽章具有特定的属性,如名称、过期日期和颁发者。此外,徽章有一个或多个需要满足以触发其授予的标准。某些标准仅存在于课程级别,而其他标准存在于网站级别。授予本身是自动的,除了手动分配。
关于徽章的详细信息可以在docs.moodle.org/en/Badges找到。我们现在将关注徽章管理和授予的主要机制。
一旦你或你营销部门的一些有创意的年轻人创建了要授予学习者的徽章,你将需要在你的学习管理系统内添加和管理这些徽章。在 Moodle 中,有两种类型的徽章:
-
课程徽章是在课程级别分配的,与课程内的活动和完成情况相关
-
网站徽章是在整个网站上分配的,与成就相关,例如在 Moodle 中完成一系列课程或在 Moodle Workplace 中的认证
作为管理员,你只关心网站徽章,这些徽章在网站管理 | 常规 | 徽章 | 管理徽章下管理。一旦你添加了徽章并提供了其属性,你必须指定徽章标准。有不同类型的课程徽章标准和网站徽章标准,如下面的截图比较所示:

图 9.31 – 课程徽章标准与网站徽章标准对比
以下徽章标准可供选择:
-
课程完成(课程):用户已完成了当前课程
-
已授予徽章(两者):用户已被授予所选徽章(们)
-
能力(两者):用户已被授予所选能力
-
手动按角色发布(网站):由网站或课程中具有特定角色的用户手动授予
-
完成一系列课程(网站):用户已完成了所选课程(们)
-
个人资料完成(网站):用户个人资料字段具有特定值
-
班级成员资格(网站):用户是所选班级(们)的成员
就像能力一样,关于如何向学习者授予徽章有两个选项:
-
自动: 所有先前的标准,除了手动按角色发布,都会触发向成功满足相应标准的用户授予徽章
-
手动: 当选择手动按角色发布标准时(仅限网站徽章),具有正确权限的用户可以向其他用户授予徽章
在 Moodle Workplace 中,徽章也可以通过动态规则授予,其中徽章可以通过规则操作进行配置。这种授予机制在docs.moodle.org/en/Dynamic_rules中详细描述。
用户可以在他们的用户资料徽章部分查看他们已授予的徽章。
这完成了我们对徽章的简要介绍,其中我们涵盖了 Moodle 的管理和奖励机制。接下来是第三种也是最后一种激励类型:证书。
管理证书
证书是正式和非正式培训的绝佳激励措施。然而,在撰写本文时,它们(尚未?)是 Moodle 的一部分,但它们是 Moodle Workplace 的一部分。然而,该模块在 Moodle 中运行得毫无故障。我们在第八章,理解 Moodle 插件中安装了Workplace 证书管理器。Moodle HQ 开发了此插件,因此可以安全地假设它将保留。一如既往,我们将专注于工具的管理元素。您可以在docs.moodle.org/en/Certificates找到完整的文档。
证书管理器允许您设计引人入胜的证书,并以不同的方式将其授予用户。该工具包含一个证书生成器,它允许您设计模板,以便可以颁发文凭或参与证书。基本工作流程如下所示:

图 9.32 – 基本证书工作流程
证书模板充当蓝图,包含静态元素(组织名称或标志)、动态元素(用户名或认证标题)和验证元素(代码或数字签名)。基于模板,将生成并分配给用户的单个证书,这可以手动完成或通过课程证书活动完成。Moodle Workplace 还支持通过动态规则颁发证书。
我们将主要处理证书模板管理的基础知识,因为教师或讲师通常通过上述课程证书活动来触发奖励。大部分内容都是从第七章,使用 Moodle Workplace 的企业学习,由 Packt Publishing 出版的技能与激励中借用的。
您可以通过站点管理 | 常规 | 证书 | 管理证书模板来管理证书模板,在那里您将看到一个证书模板列表。在我们的演示实例中,我们已经创建了三个证书模板。在每个项目的右侧,您将看到几个操作,其中一些是常用的 Moodle 图标(编辑、详情、预览、复制和删除),而其他则是特定于证书的(已颁发证书和颁发证书)。我们将在适当的时候讨论这些内容:

图 9.33 – 证书模板
要创建一个新的证书模板,请选择+ 新证书模板按钮;然后您将看到一个弹出窗口和以下大部分自解释的设置:
-
名称:这不必是唯一的,但建议不要重复使用相同的名称。
-
课程类别:证书在所选课程类别中可用;如果启用选项,它也在子类别和课程中可用。如果没有选择课程类别,证书将在整个网站上可用。
-
页面宽度和页面高度:默认值取决于您的服务器区域设置。为了参考,A4 的尺寸为 297 毫米和 210 毫米;信纸尺寸的分别是 279 毫米和 216 毫米。
-
左页边距和右页边距:这些是左和右边缘的宽度,单位为毫米。默认值为 0。
保存证书模板后,您将被定向到证书设计师,这是我们接下来要工作的。
证书设计师
证书设计师允许您交互式地创建多页、多语言的证书模板。已经(设计得非常糟糕)设计的证书画布具有以下用户界面:

图 9.34 – 证书设计师
证书设计师中可用的以下控件:
-
向证书模板添加元素。这些将在后面介绍。
-
添加新页面。您将需要设置页面高度和宽度,以及页面边距。默认值是当前页面的值。
-
展开和折叠当前页面。
-
页面操作。在这里,您可以选择向上/向下移动(仅限多页证书),访问各种设置(页面尺寸),以及删除(仅限多页证书)。
-
证书画布,完全支持拖放元素。
一旦将一些元素添加到模板中,每个项目将列在左侧。每个项目可以通过元素名称旁边的行内编辑选项或简单地单击标签来重命名。设置符号打开每个项目的参数弹出窗口,而删除图标删除条目。使用标准移动图标更改元素顺序将改变哪个元素显示在另一个元素之前。
小贴士
要修改元素值,只需在画布上单击元素。
现在,让我们来看看可以添加到证书模板中的不同元素。
添加证书元素
要向证书模板添加元素,从添加元素下拉菜单中选择它,该菜单打开一个包含元素选项的弹出菜单。每个元素包含以下设置:
-
元素名称:在编辑证书时用于标识元素。请注意,这不会在证书上显示。
-
元素特定设置:这些选项大多可以自我解释,取决于添加的元素类型。例如,文本字符串有字体和大小,而日期字段也有格式。
-
元素尺寸:每个元素都有一个宽度,而一些元素(例如,图像)还有一个高度。
-
元素位置:当您选择显示更多…时,将显示另外两个设置——位置 X和位置 Y,其顶点位于证书模板的左上角。通常,您通过拖放将图像放置在画布上;然而,有时手动定位元素很有用,尤其是当您需要水平或垂直对齐多个项目时。
我们已将可用的元素特定证书设置分为三个类别——静态、动态和验证,这些将在以下小节中介绍。
添加静态证书元素
静态元素对于从证书模板发布的每个证书都是固定的,并且它们将在生成的每个证书上都是相同的。可用的三个静态元素是边框、图像和文本:
-
证书边框是画布上唯一不能移动的元素。
-
您需要上传一个在其他地方准备的证书图像。支持的图像文件类型有 GIF、JPE、JPG、JPEG、PNG、SVG 和 SVGZ。或者,您可以选择一个共享图像,它由中央管理,并作为在多个证书上使用的资产的简单存储库;例如,您的公司标志或证书签署者的签名。您可以通过访问站点管理 | 常规 | 证书 | 证书图像来管理共享图像。如果您勾选用作背景图像框,图片将拉伸至整个证书并显示在其他所有元素之后。建议您使用添加了透明度的图像作为背景。
-
证书文本实际上是一个标签,您可以指定字体、大小(以pt为单位)和颜色。您还有三个文本对齐选项:左对齐、居中对齐和右对齐。文本右对齐意味着元素的坐标位置 X和位置 Y将指向文本框的右上角;在居中对齐中,它们将指向顶部中间,而在左对齐中,它们将指向顶部左角:

图 9.35 – 证书文本元素
文本支持多语言内容,可以通过所谓的 lang 标签生成用户语言的证书。请确保在站点管理 | 常规 | 证书 | 证书设置中勾选在用户语言中发布证书设置,启用多语言内容过滤器,并且文本字段包含多语言标签。这个通用功能将在第十章的管理本地化部分中处理;您可以在示例截图中看到一个简要示例。
现在我们已经添加了所有必需的静态元素,即边框、图片和文本,让我们来看看可以在证书模板上放置的不同动态元素。
添加动态证书元素
动态元素将被替换为从证书模板发出的每个证书的具体数据。因此,每个动态元素在证书模板上充当一个迷你占位符。典型的动态值包括接收者的姓名、课程标题,或者简单地是证书将颁发的日期。可用的四个动态元素是日期、动态字段、用户字段和用户图片:
-
证书日期元素将日期字段添加到模板中,可以是颁发日期(PDF 生成时)或过期日期(证书有效期结束)。您还可以从七个可用的日期格式选项中选择。请注意,在编辑证书模板时,日期格式选项将根据活动语言包进行调整。虽然您可以在证书模板上放置的日期元素数量没有限制,但通常只放置一个项目在文档上。
-
证书动态字段元素类型实际上是为几个课程字段提供了一个占位符:简称、全名、URL、完成成绩,以及如果有,自定义课程字段。在我们的示例中,我们选择了课程的全名,它将在生成的 PDF 上显示。在 Moodle Workplace 中,您还可以使用额外的计划和认证字段。
-
证书用户字段在证书上显示文本信息,支持用户资料中的所有纯文本字段(即,没有富文本/HTML 文本字段),包括自定义资料字段。我们在我们的证书上添加了用户的全名,这通常是个性化证书的一部分。
-
证书用户图片类型将用户的图片添加到模板中。用户图片的处理方式与图片类型的元素相同;唯一的区别是图片不能选择,因为它已经在用户资料中设置好了。
这部分内容是关于动态证书元素的子节,我们涵盖了日期、动态字段、用户字段和用户图片。接下来是验证元素。
添加验证证书元素
在证书的有效性至关重要的设置中,证书通常会被定期颁发;例如,文凭、合规文件和资格凭证。为了确保证书是由 Moodle 系统生成的,提供了两种验证机制:
- 证书代码:每个颁发的证书都包含一个唯一的代码,由 10 位数字加上两个大写字母组成;例如,0123456789AB(最后两个字母是用户的首字母)。此代码可以以四种不同的格式显示在证书上:仅代码(默认),带链接的代码,验证 URL(不带链接的代码),以及二维码(如我们示例中所示)。
要验证证书的有效性(代码),Moodle 提供了一个专用表单,可以通过四种描述的显示选项之一访问。也可以通过站点管理 | 常规 | 证书 | 验证证书手动输入代码,如下面的截图所示:

图 9.36 – 证书验证
一旦选择验证,将显示有关证书元数据的信息。您还可以通过选择底部的查看证书链接来访问文档的 PDF 版本。
- 数字签名可以根据遵循 X.509 标准的自签名 CRT 证书添加到证书(模板)中。它们通过使用自签名证书电子签名生成的 PDF 文件来防止伪造和证书的篡改,比代码元素提供更高的安全性。
在文档中使用标志、签名或印章来签署图像是很常见的,尽管创建没有文档可视化的已签署 PDF 文件也是可能的。唯一必填字段是数字签名本身,表示为 CRT 文件。您要么必须使用您组织中的现有 CRT 文件,要么生成一个自签名证书。通过 Linux 命令行执行以下三个步骤:
openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout moodle.crt -out moodle.crt
openssl pkcs12 -export -in moodle.crt -out moodle.p12
openssl pkcs12 -in moodle.p12 -out moodle.crt -nodes
第一个命令创建了一个有效期为 10 年(365,000 天)的自签名签名,使用 1,024 字节的 RSA 加密,包含私钥和证书部分。第二步是在将其转换为 PEM 文件之前,导出 CRT 文件。您需要提供 CRT 文件——在这里是moodle.crt——到您的证书上的数字签名,该签名使用标准密钥部分来标记证书为有效并可验证。内部,PDF 生成器使用 TCPDF 库的功能。
有了这些,我们已经列出了支持的证书元素,所有这些都在我们的示例证书中得到了应用,如下面的图所示:

图 9.37 – 证书元素
默认情况下,所有可用的证书插件按字母顺序显示在证书设计器菜单中。如果您希望更改元素的顺序或隐藏在您的组织中未使用的任何元素,请转到网站管理 | 插件 | 管理工具 | 管理证书元素插件并按需配置列表。开发人员还可以创建新的证书元素插件,这些插件将出现在此列表中,并像核心元素一样处理。
现在我们已经处理了创建证书模板的问题,让我们来看看证书颁发的管理任务。
颁发证书
证书的关键目标是当用户完成特定任务或解决给定问题时颁发给他们。证书可以手动颁发或通过课程证书活动颁发。
要手动颁发证书,您必须选择证书模板右侧的从此模板颁发证书图标。这将打开一个弹出表单,您必须至少选择一个用户,并且可选地指定到期日期或期限。在下面的屏幕截图中,已选择了两个用户:

图 9.38 – 手动颁发证书
对于每张颁发的证书,无论其生成方式如何,元数据都将存储在底层 Moodle 数据库中。选择证书模板旁边的已颁发证书图标以查看这些数据。除了自解释的标准字段外,表格还显示了证书代码和验证页面的链接。在操作列中,可以查看生成的 PDF 文件的预览,可以即时重新生成 PDF 文件并将其重新颁发给用户(奖项日期和时间保持不变),并且可以撤销证书。
要使用课程证书活动,您必须从moodle.org/plugins/mod_coursecertificate安装mod_coursecertificate模块。此活动允许教师从证书模板中选择。然后,学习者可以自行下载证书的 PDF 副本,并且有自动发送 PDF 副本的选项。由于所有这些操作都在课程级别进行,因此作为管理员,您不必担心这一点。有关此活动的更多详细信息,请参阅docs.moodle.org/en/Course_certificate_activity。
最后,一个与证书相关的管理设置可能也很有用:用户可以在其用户资料的我的证书页面查看他们的证书。如果在 LinkedIn 上显示选项在网站管理 | 常规 | 证书 | 证书设置中被勾选,则将显示一个额外的列,标记为在 LinkedIn 上分享。当用户选择 LinkedIn 图标时,证书将被添加到他们的动态中。您需要遵循显示的说明来接收用于此功能的LinkedIn 组织 ID。
这完成了我们对本章所涵盖的三种技能和激励的审视,其中我们涵盖了能力管理、徽章配置以及创建和颁发证书。
摘要
本章向您介绍了如何管理任何被归类为教育类的 Moodle 工具和功能。
首先,我们在介绍博客、评论和标签时配置了协作工具。接下来,我们处理了各种内容创建功能,并查看了 Moodle 内容库和 H5P、LTI 平台和工具、过滤器、抄袭预防以及许可证。然后,我们配置了成绩和评估,即成绩册和三种活动类型的配置——作业、测验和 SCORM。最后,我们以能力、学习计划、徽章和证书的形式管理技能和激励。
现在,您应该能够向所有组织利益相关者提出相关意见,以确保教育组件的适当设置。
由于配置区域数量众多,我们将配置主题分为两个单独的章节——教育配置,这是我们本章处理的,以及技术配置,我们将在下一章中介绍。
第十章:配置技术功能
Moodle 支持一系列需要管理员注意的工具和功能——有些只需要一次,有些则需要定期。由于配置区域数量众多,我们将此主题分为教育和技术配置,每个配置都由专门的章节代表:

图 10.1 – 技术配置主题
本章涉及配置技术设置。
首先,我们将配置同步和异步通信工具,涵盖聊天、视频会议(BigBlueButton)、消息(消息和通知)以及 RSS 源。
接下来,我们将学习如何配置本地化功能,同时处理表示为语言包、多语言、日历和时区的不同地区。
然后,我们将配置内部和外部存储库,使用户能够通过文件选择器将文件添加到课程和其他位置。
最后,我们将配置投资组合,允许数据导出到外部(投资组合)系统。
在本章中,我们将涵盖以下主题:
-
配置通信工具
-
管理本地化
-
管理存储库
-
管理投资组合
配置技术设置通常需要其他技术人员的输入,例如邮件、系统或网络管理员。与这些专家协商以确保 Moodle 系统的最佳设置已被证明是有益的。
到本章结束时,你应该能够接近你的同事,收集所需的技术信息,并相应地实施。
配置通信工具
通信是 Moodle 的一个关键功能,因为它增强了所有参与用户的学学习体验。Moodle 支持同步和异步通信,这需要管理员进行配置,也是本节的主题。我们还增加了一个关于联系支持的小节,因为在 Moodle 管理环境中,它被视为一个相关的通信主题。让我们从同步通信开始。
同步通信
我们将在 Moodle 中介绍两种同步通信类型:即时消息和网络会议,这两种通信方式将在以下子节中进行讨论。
配置即时消息(聊天)
Moodle 内置的即时消息功能是聊天活动,它用于课程或主页上。该模块的配置以 Moodle 聊天形式呈现——我忍不住要这么做:

图 10.2 – 聊天配置
当大量使用时,聊天活动会显著影响服务器性能。我们在第十五章的优化 Moodle 活动部分中提出了一些聊天优化策略,优化 Moodle 性能。
聊天活动足以满足基本的团体交流;然而,对于更高级的协作活动,需要使用网络会议工具,我们将在下一小节中介绍。
设置网络会议(BigBlueButton)
由于 COVID-19 大流行使得居家办公成为新常态,网络会议已成为每个工作和学习环境中的必需品。典型需求包括用于直播在线课程、虚拟办公时间或与远程学习者进行团体协作的会议室。
BigBlueButton(BBB)是一个开源的网络会议系统,用于在线学习。根据其网站 www.bigbluebutton.org 的描述,其关键特性是“实时共享音频、视频、演示文稿和屏幕 – 以及聊天(公共和私人)、白板、共享笔记、投票和分组会议室等协作工具。BigBlueButton 可以录制您的会话以供 后续回放。”
BBB 已集成到 Moodle 中,并提供了由 Blindside Networks 提供的免费服务,但有以下限制:
-
每个会话的最大时长为 60 分钟
-
每个会话的最大并发用户数为 25
-
录制内容在 7 天后过期,且不可下载
-
学生网络摄像头仅对管理员可见
BBB 是一个由教师在一个课程内设置和配置的 Moodle 活动。作为管理员,您应确保网站范围的配置与网络会议工具的典型使用相符。BBB 提供了大量的配置选项,这反映在 网站管理 | 插件 | 活动模块 | BigBlueButton 的菜单项数量上:

图 10.3 – BigBlueButton 配置
每个子菜单中的配置选项都有详细的描述和注释。为了避免重复,我们将简要描述每个设置区域的用途:
-
常规设置:除了默认的欢迎信息外,还指定了 BBB 服务器的详细信息。如果提供的免费服务对您的组织来说过于限制性,您可以选择安装本地 BBB 实例、与 Moodle 合作伙伴合作,或使用商业 BBB 托管提供商以进行更高级的设置,并相应地更新服务器设置。
-
录制:各种与录制相关的设置和默认值。
-
导入录制:启用这些设置,以便可以从其他课程导入录制。
-
显示录制:指定如何向学习者展示录制会话 – 例如,带预览或不带预览。
-
等待主持人:定义在主持人加入会话之前 BBB 活动的行为。
-
语音桥接:在 BBB 设置中如何处理语音桥接。
-
上传前演示:BBB 允许管理员以各种格式预先上传演示文稿。在这里,您可以配置此功能。
-
用户限制:指定会话中允许的用户数量。
-
参与者:当添加新房间时默认使用的规则。
-
开始时静音:设置加入会话时麦克风是否静音。
-
锁定设置的配置:启用和禁用各种 BBB 功能,如摄像头、麦克风、聊天(私人和公共)或共享笔记。
-
扩展功能:指定是否在录制链接可用时发送通知。
-
实验性功能:在撰写本文时,唯一可用的测试版功能是自动支持 BBB 的活动完成。
更多关于 BBB 的信息,请参阅 docs.moodle.org/en/BigBlueButton。
如果您的组织已经使用 Zoom 或 WebEx 等替代网络或视频会议系统,则可以在 moodle.org/plugins 找到第三方插件;其安装已在 第八章,理解 Moodle 插件 中介绍。
这完成了关于同步通信的部分。接下来是它的对应部分,异步通信。
异步通信
Moodle 中有两种异步通信选项 – 消息和 RSS 订阅源。我们将介绍这两个工具,为您提供配置异步通信所需的信息。
消息配置
Moodle 随附一个灵活的消息功能,可以被视为一个基本的跨渠道通信系统,支持 消息 和 通知。
重要提示
消息系统 = 消息 + 通知
消息包含信息,并从发送者发送到接收者。通知让用户知道已发送消息或已触发事件。
学习者可能向教师发送消息,教师收到通知(用户到用户)。活动或 Moodle 本身也可能发送消息:作为管理员,您可能会在更新可用时收到通知,学习者可能会在作业截止时收到通知。不仅如此,用户还可以通过电子邮件回复论坛帖子或将附件发送到他们的私有文件。以下表格总结了不同的消息渠道:

图 10.4 – 消息通信渠道
从 Moodle 的角度来看,我们可以区分入站和出站消息:从一个(Moodle)用户发送给另一个(Moodle)用户的消息被视为出站,因为发送是在 Moodle 内部进行的。学习者通过电子邮件发送到其私有文件中的文件被视为入站,因为 Moodle 接收了附件。我们将处理这两种方向类型,从出站消息开始。
出站消息
在配置出站消息之前,请确保在站点管理 | 常规 | 高级功能中勾选了启用消息系统复选框。对于每种通知类型(如订阅的论坛、帖子或反馈提醒),以下消息输出是可用的:

图 10.5 – 消息输出
让我们更详细地看看这些:
-
Web: 这使用内置的通知机制,不需要任何自定义。默认主题在工具栏中显示通知指示器。
-
电子邮件: 消息将被转发到电子邮件地址。Moodle 的电子邮件使用其基于 PHP 的内部方法无需配置即可工作。为了提高其性能并利用您现有的电子邮件基础设施,请转到站点管理 | 服务器 | 电子邮件 | 发件配置,在那里您可以找到所有相关的邮件设置。页面分为以下六个类别:
-
SMTP: 发送电子邮件的设置
-
无回复和域名: 无回复地址和允许的电子邮件域名
-
邮件转发: 用于开发环境
-
DKIM: 电子邮件签名
-
测试发件配置
-
电子邮件显示设置: 您可以在docs.moodle.org/en/Mail_configuration找到详细的说明。
-
-
移动设备: 消息将被发送到移动 Moodle 应用。设置在第十一章的配置移动通知子节中更详细地描述,启用 移动学习。
-
其他: 对于每个安装的第三方消息输出,都会显示一个单独的列。您可以在moodle.org/plugins/?q=type:message找到额外的通知插件,包括 Jabber、Telegram、Slack 和 SMS。
用户可以通过(在他们的偏好设置中的用户账户部分的通知偏好)配置如何接收通知,这取决于他们是否在线或离线。可以通过访问站点管理 | 常规 | 消息 | 通知设置来配置每种通知类型和通道的默认值。您还可以锁定每种通知类型的设置;在以下屏幕截图中,我们已经锁定了Web和电子邮件通道的作业通知,以确保没有人声称他们不知道即将到来的截止日期:

图 10.6 – 通知偏好
系统通知仅适用于您,管理员;所有其他通知适用于所有用户,包括入站消息配置中的三种通知类型,这是以下子节的主题。
入站消息
Moodle 允许用户通过电子邮件回复论坛帖子并将附件发送到他们的私有文件。入站消息由 消息处理器 处理,如下图所示:

图 10.7 – 入站消息
要支持入站消息,必须配置以下设置:
-
确保在 站点管理 | 服务器 | 电子邮件 | 入站邮件配置 中 启用入站邮件处理 已开启。
-
packt@openumlaut.com,前者为packt,后者为openumlaut.com。
重要提示
强烈建议您为入站消息使用专用地址,而不是日常电子邮件。
-
入站邮件服务器设置:在同一页面上配置您的 IMAP 服务器 – 请与您的邮件管理员核实详细信息。
-
配置消息处理器:要指定哪些类型的电子邮件将由 Moodle 处理,请转到 站点管理 | 服务器 | 入站邮件配置 | 消息处理器。在此,您需要配置已作为插件实现的邮件处理器。

图 10.8 – 消息处理器
Moodle 随带提供了三个消息处理器:电子邮件到私有文件、回复论坛帖子和无效接收者处理器。前两个已经提到,应该很容易理解。无效接收者处理器处理来自与用户电子邮件地址不匹配的发送者的消息,并且不能被禁用。
在 编辑 列中选择 配置 图标,勾选 启用 设置以启用其他两个处理器之一。建议您保持过期设置不变。您可以在 docs.moodle.org/en/Mail_configuration 找到关于入站电子邮件配置的详细解释以及其他电子邮件服务器的提示。
Moodle 的消息功能为用户提供灵活的入站和出站通信,同时也支持系统实体之间的通信。作为管理员,您必须确保所有支持通道都能正确且符合您组织的指南工作。您可能需要与邮件管理员协商以确保适当的配置。
Moodle 支持的第二种异步通信类型是 RSS 源,将在下一个小节中介绍。
配置 RSS 源
真正简单的聚合 (RSS) 是一种基于 XML 的格式,用于分发和聚合网络内容,如新闻标题。Moodle 支持消费和生成 RSS 源,如下图所示:

10.9 – Moodle RSS 源
通过在 站点管理 | 通用 | 高级功能 中的 启用 RSS 源 设置来开启 RSS 源。
外部 RSS 源通过 Moodle 课程中的远程 RSS 源块或仪表板进行消费。该块在网站管理 | 插件 | 块 | 远程 RSS 源中进行配置和预填充。可用的参数包括每源条目(加载和显示的原子数)和超时(缓存中源过期前的时间)。
三个 Moodle 活动 – 论坛、数据库和术语表 – 可以设置为 RSS 生产者;它们的源可以在其他课程中使用。每个模块在其各自的插件设置中都有一个启用 RSS 源选项。出于安全和隐私考虑,每个 RSS 源 URL 都包含为用户自动创建的令牌。如果有理由怀疑这已被破坏,用户可以通过偏好中用户账户部分的安全密钥链接重置此令牌。
RSS 源对于消费外部源和提供某些课程数据作为内部源非常有价值。为了结束这一节关于通信的讨论,我们将介绍用户如何联系您的支持渠道。
联系支持
一个与通信远程相关的话题是您的 Moodle 系统用户寻求帮助。当您转到网站管理 | 服务器 | 支持联系时,Moodle 允许您指定支持名称、支持电子邮件地址和支持页面:

10.10 – 支持联系
您的联系方式在 Moodle 的多个位置显示,例如在自我注册期间。您无法在前页上放置支持块,但您可以使用文本块轻松地模拟这一功能。
这部分关于通信工具的讨论到此结束,我们讨论了同步工具(聊天和网络会议)、异步工具(消息和 RSS)以及为 Moodle 支持设置通信渠道。在下一节中,我们将介绍 Moodle 本地化,以促进您 LMS 在不同地区的使用。
管理本地化
本地化涉及将软件适应用于不同的地区。地区与一个适用某些文化方面的区域相关联,例如语言、日期和时间的格式化、日历表示等。
由于 Moodle 在全球范围内使用,并且许多教育机构跨越大陆和文化,因此本地化必须得到全面支持。
重要提示
如果您的 Moodle 系统的主要语言不是(英国或美国)英语,请确保在安装过程中选择它。这样,地区设置以及角色名称和描述都将得到充分的本地化。
在 Moodle 中可以配置的关键区域是语言相关设置和日历信息。语言和日历是以下两个子节的主题。
语言、idiomas、语言和تاغللا
Moodle 支持超过 80 种语言,包括拉丁语和世界语!Unicode 标准已被采用来表示多种语言的字符集,因为它涵盖了世界上大多数现代脚本。Moodle 支持从左到右的书写系统,如本书中使用的,以及从右到左的书写系统,例如阿拉伯语:

图 10.11 – 支持从右到左书写
语言包被用于支持不同的地区。
理解语言包
在 Moodle 中,一个 语言包 包含有关地区和所有翻译的信息。技术上,术语“语言包”有点误导 – 它们应该被称为“地区包”。
重要提示
每个地区都表示为一个语言包。
以下图表说明了语言包的基本概念:

图 10.12 – 语言包
每个语言包包含两个基本部分:
-
语言配置:这包含有关地区的本地化信息 – 例如,要使用的字符集、书写方向、各种日期和时间格式以及不同数据类型的分隔符
-
语言字符串:这些按 Moodle 组件(例如,核心、模块、第三方)分组,并为每个语言字符串提供翻译。
标准化的两位字母区域代码表征地区。例如,pt 代表葡萄牙语,在葡萄牙使用,而 pt_br 代表巴西葡萄牙语。在内部,pt 是父语言,而 pt_br 是子语言,它只包含与父语言包不同的字符串。这种方法显著减少了子语言包的大小。
一些非标准化语言的语言包已经进入 Moodle,这部分解释了为什么有超过 200 (!) 个语言包可供选择。对于这些专业包,其创建者已经编造了新的代码,包括 de_kids、en_us_k12 和 es_mx_kids(针对年轻学习者)、da_rum(课程已被重命名为房间),最重要的是,en_ar(海盗语言 – 嘿!)。您还可能遇到带有 wp 后缀的语言包;它们代表 Moodle Workplace 的字符串。
要支持某个地区,您必须安装其语言包,Moodle 将自动从 download.moodle.org 下载。前往 站点管理 | 常规 | 语言 | 语言包,通过 Moodle 的语言导入工具添加新包:

图 10.13 – 语言导入工具
在前面的截图中已安装了六个语言包,包括阿拉伯语、英语(en 和 en_us)、法语、德语和简体中文。在右侧选择一个或多个区域,然后点击安装选定的语言包按钮以添加更多语言包。要执行相反的操作,请在左侧列表中选择单个或多个语言包,然后点击卸载选定的语言包按钮。
小贴士
如果您的防火墙不允许连接到 Moodle 的下载服务器,您需要从download.moodle.org/langpack下载所需的语言包,将它们复制到$CFG->wwwroot/lang,然后手动解压缩文件。
英语(en)语言包不能卸载。在未翻译其他语言的字符串的情况下,它用作参考语言。有些语言包是不完整的,有时,只有非管理员功能被翻译。
安装完成后,用户可以从配置文件菜单中的语言菜单中选择一种语言(如果已配置)。请注意,只有 Moodle 中的术语和短语会发生变化。除非配置了使用多语言功能,否则创建的内容不会翻译(请参阅本章的自定义语言小节):

图 10.14 – 语言选择器
语言包保存在download.moodle.org/langpack/4.x(其中x是当前发布版本号)。有些包更新频率高于其他包,Moodle 会自动每天更新语言包。如果您像我一样不耐烦,点击更新所有已安装的语言包按钮可以立即执行此任务。
安装所有必需的语言包后,您应配置与语言相关的设置。
配置语言设置
Moodle 提供了一些与语言相关的参数,您可以在网站管理 | 常规 | 语言 | 语言设置中找到:
-
语言自动检测:默认情况下,Moodle 会从使用的网络浏览器区域检测语言。如果您希望覆盖此设置并使用默认网站语言,请取消选中此复选框。
-
默认语言:这允许您选择整个网站使用的语言,除非个别用户通过语言菜单或个人资料覆盖它。只有已安装语言包的语言会显示在语言菜单中。
-
在账户创建时将用户的浏览器语言设置为首选语言:如果启用,它将执行其说明的功能;否则,将使用配置的默认语言。如果用户的浏览器语言未安装,也将设置默认语言。
-
显示语言菜单:如果启用,语言菜单将显示在个人资料菜单中。用户始终可以在个人资料中更改语言,无论设置如何。请注意,某些主题不支持此功能。
-
语言菜单上的语言:如果留空,所有已安装的语言都将出现在语言菜单中。要减少可用语言的数量,请指定以逗号分隔的 locale 代码列表。
-
缓存语言菜单和缓存所有语言字符串:除非您添加或删除语言包,否则建议您保留这两个设置启用,因为它们分别缓存语言菜单项和字符串,而不是动态加载。
-
en_US.UTF-8。相应的文件必须在系统级别安装。 -
Excel 编码:Moodle 在下载 Microsoft Excel 中的数据(如成绩单报告或日志文件)时使用 Unicode 格式。除非您的教师或学习者使用 Excel 的恐龙版本,否则请保持此设置不变。
-
任务状态:此条目仅用于信息目的,无法修改。它通知您已安装的语言包是否通过计划任务定期更新(有关任务的更多信息,请参阅第十五章,优化 Moodle 性能)。
三项额外的语言相关设置放置在其他位置:
-
在站点管理 | 用户 | 权限 | 用户策略中的全名格式选项定义了当显示全名时名称的显示方式。如果输入了语言占位符,则全名的格式由当前语言包决定。这样,您可以满足对名字的本地敏感性。
-
moodle/site:viewfullnames能力。 -
alex.büchner。
到目前为止,我们已使用 Moodle 及其基于社区的翻译者提供的语言包。接下来,让我们处理自定义语言字符串和短语。
自定义语言
在 Moodle 中使用的每个短语、术语和字符串都在语言文件中表示,与特定的 Moodle 模块(位于lang目录中)相关联。有超过 30,000 个(!)语言字符串,展示了系统的规模。您可以更改任何单词或短语;例如,您可能想将成绩改为分数,成果改为工作指标,教师改为讲师,等等。
要自定义语言文件,请转到站点管理 | 常规 | 语言 | 语言自定义,您首先必须选择要自定义的语言。点击打开语言包进行编辑按钮将进入检出步骤;这可能需要几秒钟。一旦完成,您就可以点击继续按钮。
重要提示
Moodle 在$CFG->dataroot内部创建一个local目录,其中存储您编辑的短语。请确保您有对lang目录的写入权限,以避免错误信息。
Moodle 为每个模块保留一个单独的语言文件。这种分离是有益的,因为它使底层代码(由程序员开发)从本地化(由翻译人员工作)中解放出来。然而,缺点是你需要知道相应的字符串位于哪里(即哪个 PHP 模块)。然而,Moodle 提供了一个良好的过滤机制,以简化对要修改的字符串的搜索。
假设你想将术语Guest改为Visitor。由于Guest这个术语可能出现在多个模块中,因此安全起见,可以选择这些组件的显示字符串列表中的所有项目。
你可以选择的过滤器条件包括仅自定义,用于之前会话中已更改的字符串,仅帮助,用于气球帮助提示,以及仅当前会话中更改,用于当前会话中已更改的短语。仅包含字符串参数需要你正在寻找的单词或短语(在我们的例子中是Guest)。内部,Moodle 使用字符串标识符,也可以用来搜索内容。只需在字符串标识符文本框中输入字符串 ID 即可进行此操作。一旦搜索成功,以下信息将显示与过滤器匹配的每个字符串:

图 10.15 – 语言自定义
你可能已经注意到了从顶部第五个短语中的$a参数。这是一个占位符,它会在运行时被替换;在这种情况下,它被替换为课程的名称。这些代码必须在本地自定义中包含 – 你必须保留它们以避免任何问题。一些占位符将包含一个参数,例如$a->id或$a->query。
确保你点击保存语言包更改按钮,以便在 Moodle 网站上反映更改。这些修改将在你更新网站时得到保留。
你可以授予用户访问report/customlang:edit和report/customlang:view角色能力的权限。
有一个有用的设置叫做?strings=1或&strings=1附加到页面 URL 上,如下示例所示:

图 10.16 – 显示语言字符串组件和标识符
如果你希望向语言包贡献翻译的字符串,请访问 Moodle 语言门户lang.moodle.org。你将找到有关使用 AMOS 翻译工具和 AMOS Moodle 块的信息(详情请参阅docs.moodle.org/dev/AMOS_manual)。
现在我们已经本地化了用户界面的一些文本元素,让我们来处理多语言内容。
支持多语言内容
如果你的用户处理多语言内容,可以开启<span lang="xx"class="multilang">标签,这允许你的课程设计者和内容创建者在通过 Atto 编辑器输入的所有文本区域中支持多种语言。
多语言 HTML 语法在一段时间前已经改变,并且不再被支持。如果你的用户中还有人仍在使用旧格式,你需要运行一次admin/tool/multilangupgrade)。你可以在第十七章,使用 Moodle 管理工具中找到更多关于管理工具的详细信息。
在上一章讨论可用性限制时提到的附加插件是按语言限制(moodle.org/plugins/availability_language)。一旦安装了此附加组件,用户就可以根据所选语言限制个别活动和资源。除了可用的标准限制(如活动完成情况)之外,课程作者还可以指定语言作为标准。
这就结束了 Moodle 中关于语言相关主题的部分。本地化的第二部分是日历信息,将在接下来的子部分中介绍。
日历信息
不同的文化以不同的格式表示日历信息——日期、时间和时区。以下高级图示说明了 Moodle 日历的主要组件:

图 10.17 – Moodle 日历
内置日历由多个来源提供数据,这些来源可以是自动的(例如,作业截止日期或评分截止日期),手动的(例如,消防演习公告),或者一个更新频率较高的外部日历源。
每个日历条目都表示为一个事件,它包含几个字段:标题、日期、时间、描述、持续时间和类型。根据日历类型(站点、类别、课程、组、用户或其他),可能还会有其他字段。
统一日历集中了系统中的所有事件,并作为用户日历的来源。用户日历会以所选区域(语言包)中指定的格式和日历设置中指定的参数显示事件。
重要提示
对于非英语日历,必须安装区域设置才能正确工作。在 Unix 系统中,你可以使用locale -a命令来检查这一点。否则,你的日历中的日期将以英语显示。
在我们处理 Moodle 中的时区之前,我们将首先配置日历。
配置日历
默认情况下,Moodle 根据设定的公历地区格式化日期和时间。其他日历也受到支持,但它们必须作为插件安装。要这样做,请遵循第八章中的说明,“理解 Moodle 插件”,并在 moodle.org 的公共插件数据库中浏览日历部分。
可以通过访问网站管理 | 外观 | 日历来更改日历设置:

图 10.18 – 日历配置
之前屏幕截图中最相关的字段显示在日历本地化中(我已安装了日本日历插件):
-
日历类型是网站及其用户的默认设置,可以在用户的偏好部分通过首选****日历选项进行覆盖。
-
如果您需要查看所有日历事件,请启用管理员查看所有;否则,您将只能看到您的事件。
-
时间根据所选地区显示;时间显示格式可以通过 12 小时或 24 小时时钟来覆盖。
-
不同国家有不同的周起始日——例如,在北美,周从周日开始,而在欧洲,周从周一开始(周开始)。
-
并非所有国家都将周六和周日作为周末。例如,在伊斯兰国家,周末是周五和周六,而周日是正常的工作日。这可以通过周末****天数选项来指定。
此页面上的一些更多设置主要涉及前瞻值和日历导出选项。这些设置在屏幕上有很好的解释。
配置时区
Moodle 支持跨越时区的系统,这发生在三种场景中:
-
在覆盖多个时区的国家
-
在有来自多个国家/时区的学习者的网站上
-
在服务器托管在组织时区之外的情况中——例如,通过互联网服务提供商
要修改默认时区参数,请访问网站管理 | 常规 | 位置 | 位置设置:

图 10.19 – 时区配置
在默认时区参数中选择的值在整个系统中使用。默认值在安装时设置,但这可能不会反映您的本地时间。除非已设置强制时区,否则每个学习者都可以在其用户配置文件中更改此设置。显示的时间,如作业截止日期,将调整到所选时区。如果指定,默认国家和默认城市用于新用户帐户。
某些时区的规则时不时地会发生变化——例如,夏令时的调整。在这种情况下,您应该更新您的系统,因为 Moodle 的新版本总是包含最新的时区规则。
这完成了本节关于本地化的内容。接下来,我们将探讨存储库及其管理。
管理存储库
文件选择器是 Moodle 中大多数文件操作的核心。可以从各种来源选择文件,在 Moodle 中称为存储库。
重要提示
存储库使用户能够将文件添加到 Moodle 中的课程和其他位置。
以下图表显示了 Moodle 核心中可用的存储库以及它们与文件选择器协同工作的概述:

图 10.20 – Moodle 存储库
为了简化,我们将区分内部和外部存储库。内部存储库访问内部 Moodle 文件。外部存储库位于 Moodle 外部,在某些本地或远程媒体上,在其他应用程序的数据存储中,或在云中。所有存储库都通过文件选择器访问——一些直接访问,其他则添加了认证层。文件可以被复制或链接,尽管并非所有存储库类型都支持链接。
您可以通过访问站点管理 | 插件 | 存储库 | 管理存储库(您系统上的存储库顺序可能与此视图不同)来配置 Moodle 存储库:

图 10.21 – 管理 Moodle 存储库
每个存储库插件都有以下三种状态之一:
-
启用且可见:存储库插件始终可通过文件选择器访问
-
启用但隐藏:存储库插件无法通过文件选择器访问,但已创建的实例将被保留
-
禁用:存储库在您的 Moodle 系统中不可用,所有实例都将被删除
重要提示
当您禁用存储库插件时,其设置和所有实例都将被删除。您可以选择下载任何内容或对 Moodle 的引用。
存储库的列表顺序反映了它们在文件选择器中出现的顺序。此顺序可以通过上下箭头进行更改。一旦启用存储库,几乎所有存储库类型都会显示一个设置链接。每个存储库都有一个存储库插件名称参数,允许您覆盖其默认名称。一些存储库还具有额外的特定于插件的设置,这些将在适当的时候讨论。
所有存储库类型都支持复制文件,但只有一些也支持链接文件。如果您想启用链接,请确保在站点管理 | 插件 | 存储库 | 通用存储库设置中勾选了允许外部链接。出于数据完整性和安全性的原因,一些机构不允许链接。
在以下小节中,我们将更详细地介绍内部和外部存储库的不同类型。
内部存储库插件
可供选择的内部存储库插件有:
-
服务器文件:这些是用户可以访问的 Moodle 系统上的文件。文件按 Moodle 上下文分层排列(参考第二章,探索 Moodle 系统)。
-
近期文件:这些是最近使用和上传的文件。您可以在设置中指定近期文件数量(默认为50)和时间限制。
-
私有文件:这些是用户的个人文件,可以在 Moodle 中访问。您可以通过访问站点管理 | 常规 | 安全 | 站点安全设置来通过私有文件空间参数指定用户配额。
-
嵌入式文件:这允许用户重用当前文本区域中嵌入的文件。
-
旧课程文件:这允许访问从(古老的)Moodle 1.9 迁移后的文件。您可以在docs.moodle.org/en/Legacy_course_files找到有关此存储库类型的详细信息。旧课程文件旨在作为临时措施,目标是所有文件迁移完成后停止使用。您可以在站点管理 | 插件 | 存储库 | 通用存储库设置中找到与旧文件相关的两个自解释设置:新课程中的旧课程文件和允许添加到旧课程文件。
内部存储库插件由 Moodle 处理,通常不需要任何配置或管理。而它们的外部对应插件则不是这样,我们将在下一部分进行介绍。
外部存储库插件
外部存储库插件将允许您的用户将(复制、流式传输或链接)新文件或数据添加到您的 Moodle 系统中。内容可以从本地计算机、U 盘、网络驱动器、云存储或外部应用程序(包括流媒体服务)上传。像往常一样,可以通过插件数据库在moodle.org/plugins/?q=type:repository安装额外的存储库类型。
以下表格列出了所有作为 Moodle 核心部分的外部存储库插件:

图 10.22 – 外部存储库类型
一些外部存储库类型支持多个实例。现有的全局、课程和私有用户实例的数量显示在插件设置链接下。这些可以在相关上下文中进行配置:
- 全局实例:作为管理员,您可以创建所有系统用户都可以访问的全局实例。全局实例是在管理插件时作为设置的一部分创建的——例如,Nextcloud存储库:

图 10.23 – 创建全局实例
repository/filesystem:view能力可以访问文件选择器中的实例。
一个流行的例子是文件系统存储库类型,每个实例必须选择一个可读目录。一个典型的用例是为文件上传创建一个专用目录,然后可以在特定课程中访问。以下截图展示了如何设置课程存储库:

图 10.24 – 配置课程存储库
- 用户私有实例:如果选择了允许管理员为个人使用添加<存储库插件>实例选项,您可以通过偏好设置中存储库面板的管理实例链接创建个人实例。
在配置外部存储库插件时,您可以找到以下三种类型的认证:
-
无需认证:文件或内容可以直接访问,无需任何凭证。
-
OAuth 2 服务:访问存储库需要通过 OAuth 2 进行认证。如何在第五章中配置其服务已在基于服务提供者的认证部分介绍,管理用户、群体和认证。Nextcloud 截图(图 10**.23)显示了通过 OAuth 2 完成的存储库插件的典型设置。
-
插件依赖:不支持 OAuth 2 的存储库类型已实现了自己的认证机制。这可能是一对访问/秘密密钥,一个 API 密钥,或者只是一个许可证。
虽然大多数外部存储库类型支持所有文件格式,但有些只托管特定的格式;例如,YouTube 只提供视频流,内容库(目前)只存储 H5P 文件。流媒体内容存储库(例如,YouTube 和 Vimeo 的第三方插件)仅在从 Atto 的音频/视频图标启动时出现在文件选择器中。
所有提到的 Moodle 存储库的附加信息可以在docs.moodle.org/en/Repositories找到。
提示
一旦完成存储库的设置,最好从多个上下文(用户、站点和课程)测试访问权限,并确保没有用户能够访问他们不应访问的资源,反之亦然。
为了总结本节,让我们看看一个完全填充的文件选择器,它支持大量的存储库类型:

图 10.25 – 带有各种存储库的文件选择器
存储库涉及将内部和外部内容引入 Moodle。为了实现相反的效果 – 将内容从 Moodle 中推出去 – 您可以使用个人作品集,这是本章最后部分的主题。
管理个人作品集
根据 Moodle Docs,Moodle 个人作品集允许数据,如论坛帖子或作业提交,导出到外部系统。以下图表说明了此流程的高级工作流程:

图 10.26 – Moodle 个人作品集
用户可以导出的数据非常详细 – 例如,一个聊天会话、一个词汇表条目或一个单独的论坛帖子。根据要导出的文件大小,个人作品集导出将立即执行(文件大小适中)或排队(文件大小较大)。
重要提示
支持的导出格式包括 HTML、LEAP2A、图片、文本和文件。
通过访问网站管理 | 常规 | 高级功能来选择启用个人作品集参数,以启用 Moodle 个人作品集。完成后,您可以在网站管理 | 插件 | 个人作品集 | 管理个人作品集处访问所有可用的个人作品集插件:

图 10.27 – 管理个人作品集
每个个人作品集都有以下三种状态之一:
-
启用且可见:个人作品集将在整个系统中可用
-
启用但隐藏:个人作品集必须被激活才能使用
-
禁用:您的 Moodle 系统中不可用个人作品集
与存储库一样,每个个人作品集插件都有一个名称设置,其中可以更改默认插件标签。与存储库不同,不存在多个实例,也无法更改插件的顺序。
以下核心个人作品集插件可以激活和配置:
-
文件下载:支持的导出格式是 HTML 和 LEAP2A(电子作品集可移植性的规范)。
-
Flickr.com:按照屏幕上的说明获取API 密钥和密钥字符串。首次使用时需要授权。
-
Google Drive:按照屏幕上的说明使用 OAuth 2.0 将您的站点注册到 Google,以获取客户端 ID和密钥详情。首次使用时必须授予权限。将在用户的文档区域自动创建一个 HTML 文件。
-
Mahara ePortfolio:此存储库类型仅在已建立到开源电子档案系统 Mahara 的有效网络连接并启用 MNet 认证 插件时才可用。在 第十九章,“设置 Moodle 网络”,我们将简要介绍 MNet。
-
第三方:可以在 moodle.org/plugins/?q=type:portfolio 找到更多插件 – 例如,Box。
一旦设置至少一种档案类型,用户将在他们课程中的活动内部看到 导出到档案 选项。选择此选项时,他们必须从 可用导出格式 下拉菜单中选择一个现有目的地。根据选择的档案类型,可能需要采取额外的操作 – 例如,登录网站、确认文件类型或授予外部应用程序访问权限。
用户可以选择在他们的 导出到档案 列表中显示哪些可用的档案。一旦他们导航到 偏好 中的 档案 选项卡中的 配置 选项,他们就有权隐藏任何配置的档案插件。
此外,当他们导航到 档案 选项卡中的 传输日志 时,他们将看到任何 当前排队传输 和 先前成功传输 的列表。前者列出所有挂起的导出,可以使用播放按钮继续或通过停止按钮取消。后者显示所有最近进行的传输的详细信息。
以下截图展示了提到的三个用户操作 – 管理档案、导出档案和查看传输日志:

图 10.28 – 档案用户操作
一些设置适用于所有档案,并且可以在 网站管理 | 插件 | 档案 | 通用档案设置 中访问。它们包括两个文件大小阈值(适度传输文件大小 和 高度传输文件大小)以及两个数据库记录数阈值(适度传输数据库大小 和 高度传输数据库大小)。如果实际值超过阈值值,用户将收到警告,指出导出可能需要一些时间。
提示
所有提到的 Moodle 档案的更多信息可以在 docs.moodle.org/en/Portfolios 找到。
档案是构成此技术配置章节的四个构建块中的最后一个。虽然使用不多,但它们是学习者将数据导出到外部(档案)系统的一个宝贵功能。
摘要
本章教您如何管理所有被归类为技术的 Moodle 工具和功能。
首先,我们通过涵盖聊天、视频会议(BigBlueButton)、消息(消息和通知)以及 RSS 订阅,配置了同步和异步通信工具。接下来,我们处理了各种本地化创建功能、区域设置、多语言、日历和时区。然后,我们配置了内部和外部存储库,以便用户可以通过文件选择器将文件添加到课程和其他位置。最后,我们配置了作品集,以便学习者可以将数据导出到外部(作品集)系统。
现在,你应该处于一个很好的位置,可以接触你组织中的所有利益相关者,并收集任何相关输入,以确保所有技术组件都已适当设置。
现在,让我们继续进入另一个令人兴奋的章节,我们将介绍移动学习和 Moodle 应用程序。
第十一章:启用移动学习
在大多数组织中,移动学习已成为电子学习的标准,并构成了课程交付的关键部分。移动学习使学习者在任何时间、任何地点都能获得更多灵活性;它提供自我导向和独立学习,支持在职培训,并促进微学习。移动设备通常用于消费和通信,而不是创作和管理。
Moodle 已发布适用于 iOS 和 Android 的应用,允许用户与 Moodle 系统互动。该应用最适合学习者,支持参与者访问课程内容、接收通知、上传数据、监控进度以及与其他用户互动的关键功能。该应用是智能手机或平板电脑上通过网页浏览器访问 Moodle 的替代品,并且具有专门为移动使用(在线和离线)设计的优势。
到本章结束时,您将了解如何准备、配置和自定义 Moodle 应用。本章包括以下主要部分:
-
理解 Moodle 的应用计划:您将熟悉 Moodle 提供的不同订阅方案,包括品牌移动应用。
-
准备使用 Moodle 应用:您将了解在您的学习者可以使用应用之前必须采取的预备步骤。我们将区分通过移动浏览器访问 Moodle 和应用。然后我们将通过集中管理的设置来启用应用并配置不同的身份验证类型。我们还将简要介绍如何在移动设备上安装应用。
-
配置 Moodle 应用:我们将探讨如何配置 Moodle 应用以提供适合学习者的移动学习体验,包括移动功能、通知和应用策略。
-
自定义 Moodle 应用的外观:您将学习如何调整应用的外观和感觉,包括更改登录标志、修改应用主题和配置应用横幅。
理解 Moodle 应用计划
在本节中,您将了解 Moodle 提供的不同应用订阅方案。选择取决于您需要的功能、活动设备的数量,以及,一如既往的,您的预算。
重要提示
Moodle 的 iOS 和 Android 应用免费,没有任何应用内购买或隐藏费用。
Moodle 提供四种计划以支持不同的功能和限制:
-
免费版:基本功能集,几乎无自定义选项,每月最多 50 个活动设备用于推送通知,每个设备最多可下载两个离线课程,且无品牌选项。
-
优点:完整的功能集,一些自定义选项,每月最多 500 个活动设备用于推送通知,每个设备最多可下载四个离线课程,且无品牌选项。
-
高级:完整的功能集和自定义选项,每个设备无限推送通知和离线课程,以及基本的品牌选项。位于 moodlecloud.com 的站点以及由 Moodle 合作伙伴托管的实例都属于这一级别。
-
品牌 Moodle 应用程序:正如其名所示,其主要目的是提供一个外观和感觉与您的企业品牌一致的应用程序。然而,除了支持您的组织视觉身份外,品牌应用程序还带来了一些额外的优势:
-
在 Apple 和 Google Play 应用商店中有一个单独的条目。
-
应用程序中嵌入了一个静态 URL 网站,因此用户在首次使用应用程序时无需输入 Moodle 实例的 URL。
-
提供单独的托管空间,并在 Moodle 的符合 通用数据保护条例(GDPR)的推送通知基础设施中确保高级隐私。
-
跟踪移动参与度分析,以更好地了解行为并改善您的移动友好型学习体验。它还可以深入了解学习者如何使用您的应用程序,并提供个性化的移动参与度数据访问。
-
带有品牌的应用程序是由 Moodle 提供的订阅服务。请联系您当地的 Premium Moodle 合作伙伴或查看 moodle.com/app 了解更多详情。
您可以在 apps.moodle.com 找到包含最新价格的完整功能比较表。
要了解您站点的计划,请转到 站点管理 | 常规 | 移动应用程序 | 移动应用程序订阅。以下是 免费 和 高级 计划的截图,并列出了所有功能,除了品牌应用程序的功能:

图 11.1 – Moodle 应用程序计划
在本章中,我们将描述高级计划的特性,因为它们涵盖了管理员可以执行的所有自定义设置。在开始之前,必须采取一些准备工作步骤,具体内容将在以下部分中解释。
准备使用 Moodle 应用程序
在用户能够从移动设备访问学习内容、与他人合作或监控进度之前,有一些事情需要考虑。首先,必须决定通过 LMS 访问的方式,是使用移动网络浏览器还是专用应用程序。本章重点介绍移动应用程序,它必须在中央启用。其次,用户必须在首次登录之前下载并安装应用程序。第三,用户必须通过移动应用程序进行身份验证。本节将涵盖所有这些内容,从关于如何从移动设备访问 Moodle 应用程序的简要介绍开始。
从移动设备访问 Moodle
通常,学习者可以通过两种方式通过移动设备访问 Moodle——直接通过手机或平板电脑上的网络浏览器,或者通过 Moodle 的 iOS 和 Android 应用程序。
网络浏览器视图实际上与我们全书所看到的一样,只是它通过响应式设计针对较小的屏幕尺寸进行了优化。与通过移动浏览器使用 Moodle 相关有三个主要论点——用户在移动设备上拥有与桌面设备相同的可用功能,处理方式相同,并且用户不需要在他们的移动设备上安装额外的应用程序。
Moodle 应用程序提供了相同数据的另一种视图,并且交互已经针对移动使用进行了优化。此外,支持离线使用和同步,由一个小云符号表示。与浏览器视图相比,移动应用程序的另一个优点是支持推送通知,这是我们所有人都习惯了的功能。
以下两个屏幕截图显示了在访问相同仪表板时两种使用类型的区别,浏览器视图在左侧,应用程序视图在右侧:

图 11.2 – 浏览器视图与应用程序视图
下面的图示展示了从移动设备访问 Moodle 时发生简化的过程(关于网络浏览器访问的详细信息在顶部,关于应用程序访问在底部):

图 11.3 – 通过浏览器和应用程序访问 Moodle
让我们从左到右再从右到左回顾一下前面的图示。当用户通过网络界面发出请求时,浏览器将请求传递给网络服务器,网络服务器调用负责的 PHP 模块。PHP 模块通过一个动作(查询、更新、插入或删除操作)调用数据库,并返回所需的数据。基于这些信息,PHP 模块将数据(通常是 HTML 或 JavaScript)返回给网络服务器,网络服务器将需要显示的信息传递回用户的浏览器。
当通过应用程序访问 Moodle 实例时,过程与通过浏览器访问完全相同,除了第一步,它涉及调用网络服务从网络服务器请求数据。同样适用于返回的信息,它也通过网络服务传递。网络服务是网络和移动应用程序之间的标准通信协议。您可以在第十八章中找到更多关于此主题的信息,使用网络服务集成外部系统。
我们将在本章中专门关注 Moodle 应用程序。然而,在您的学习者可以使用应用程序之前,以下先决条件必须得到满足:
-
必须在您的网站上启用应用程序使用
-
用户必须在他们的移动设备上下载并安装应用程序
-
用户必须通过应用程序进行身份验证
我们将逐步介绍所有三个步骤,从启用应用程序开始。
启用应用程序
启用 Moodle 应用程序与您的 Moodle 站点交互的过程已经大大简化。转到站点管理 | 常规 | 高级功能并勾选为移动设备启用网络服务选项,如果尚未勾选,它还会在该页面上激活启用网络服务设置:

图 11.4 – 启用 Moodle 应用程序
就这些了。不需要其他步骤。嗯,几乎是这样。您还应该启用移动通知选项,您可以在站点管理 | 常规 | 消息 | 通知设置下找到它。我们将在应用程序配置部分稍后介绍移动通知插件的设置。
重要提示
强烈建议您启用带有有效证书的 HTTPS。Moodle 应用程序将始终尝试首先使用安全连接。
现在应用程序使用已被启用,让我们看看您的用户如何在他们的时尚移动设备上安装应用程序。
安装 Moodle 应用程序
您的学习者必须从 Apple 的 App Store 或 Google Play 下载并安装应用程序。应用程序无需付费。以下是在 Apple App Store(在平板电脑上)和 Google Play(在手机上)上两个应用程序的截图:

图 11.5 – iOS 和 Android 的 Moodle 应用程序
要安装应用程序,用户需要在他们的移动设备上遵循常规步骤(从 iOS 上的GET和 Android 上的安装开始)。
注意,还有一个 Moodle Workplace 应用程序,它基于官方 Moodle 应用程序。它具有相同的功能,并增加了针对 Workplace 特定功能的一些额外功能,例如计划和团队。
重要提示
Moodle 应用程序仅与 Moodle 一起使用。Moodle Workplace 应用程序仅与 Moodle Workplace 一起使用。
不要因为负面评论而气馁,因为几乎所有负面反馈都来自期望应用程序独立工作而不需要访问现有 Moodle 系统的用户。这种误解很好地引出了下一个启用步骤——通过应用程序和认证访问您的 Moodle 系统。
在 Moodle 应用程序上进行认证
一旦安装并首次启动应用程序,每个用户都必须通过 Moodle 实例进行认证。Moodle 支持三种不同的登录类型,管理员必须在站点管理 | 常规 | 移动应用程序 | 移动认证中进行选择,如下截图所示:

图 11.6 – 认证类型
登录类型字段提供了以下三个选项:
-
通过应用程序(默认):这是适用于所有手动账户的默认认证机制。
-
通过浏览器窗口(用于 SSO 插件):如果您的网站使用SSO身份验证方法,例如Microsoft Active Directory(MS-AD)、轻量级目录访问协议(LDAP)或开放授权(OAuth),则此机制将打开一个单独的浏览器窗口,在该窗口中必须提供登录凭证。
-
通过嵌入式浏览器(用于 SSO 插件):这实际上与上一个选项相同,但提供了更好的用户体验。然而,并非所有身份验证插件都适用于嵌入式浏览器——例如,当需要 JavaScript 弹出窗口时。
二维码访问是让用户通过扫描矩阵条形码来访问网站的一种替代方式。免费计划上不可用二维码登录。此模式可以通过网站 URL(用户必须输入其凭证)或自动登录进行配置。二维码身份验证密钥持续时间参数确定用户个人资料中显示的二维码的有效期。如果勾选了二维码身份验证与 IP 检查相同设置,则用户被迫使用相同的网络生成和扫描二维码进行登录。除非用户报告问题,否则应保持此附加安全措施启用:

图 11.7 – 二维码登录
如果您的组织使用自定义品牌应用,并且登录类型字段设置为两种单点登录类型之一,则可以设置URL 方案选项。这将导致只有自定义品牌应用适用于该网站,而官方 Moodle 应用将不起作用。
所需的最小应用版本选项通常可以留空,并且只有在您希望或需要强制用户更新到 Moodle 应用的最新版本时才应设置。
自动登录请求之间的最短时间参数允许您为当前用户指定创建自动登录密钥的阈值。如果此阈值设置得太高,安全措施将不断提醒用户使用其登录凭证。
三种不同的登录类型将以不同的方式显示给用户,如下面的截图序列所示:

图 11.8 – 不同的移动登录类型和身份验证
在初始启动时,必须输入 URL;在后续启动中,这将预先填写。除非管理员已在网站管理 | 常规 | 移动应用 | 移动功能中选择了强制注销设置,否则登录凭证也是如此。品牌应用无需输入 URL,因为它已硬编码。
通过应用程序登录会显示登录窗口,作为应用程序的一部分。当通过浏览器登录时,将显示通知告知用户,在重定向之前将打开移动设备上的默认浏览器。一旦输入凭据,Moodle 将用户重定向回应用程序。嵌入式浏览器视图看起来相同,但不会打开外部浏览器。
这部分内容是关于在使用 Moodle 应用程序之前必须采取的预备步骤。我们首先讨论了从移动设备访问 Moodle 系统的两种选项,然后专注于 iOS 和 Android 的移动应用程序。接下来,我们启用了应用程序并配置了身份验证。我们还简要介绍了在用户设备上安装应用程序的过程。现在这些步骤已经完成,我们将从 Moodle 内部自定义应用程序。
配置 Moodle 应用程序
Moodle 应用程序的美丽之处在于它可以“从外部”进行自定义——也就是说,仅通过配置。在本章中,您将学习如何根据学习者的需求定制应用程序。定制的三个主要领域如下:
-
移动功能
-
移动通知
-
移动应用程序策略
还可以通过开发扩展移动应用程序的功能,但这超出了本书的范围,因为需要编程技能。更多详细信息可以在docs.moodle.org/dev/Mobile_support_for_plugins找到。让我们开始了解移动应用程序功能。
配置移动功能
Moodle 应用程序允许您在站点管理 | 常规 | 移动应用程序 | 移动功能下自定义一些基本功能,如下面的截图所示:

图 11.9 – 移动功能
禁用功能列表允许您从移动应用程序中删除功能。建议您隐藏任何未使用的功能,以减少应用程序的复杂性并提高学习者的学习体验。
与删除功能相反的是向应用程序主菜单添加项目。这些项目必须使用自定义菜单项指定。每个条目的格式如下(所有条目都必须由管道符号分隔):
item text|link|opening method|[language code]|[icon]
item text是将在应用程序中显示的标签。link参数设置用户将被定向到的 URL。应用程序支持四种不同的打开方法:
-
应用程序:用于链接到应用程序支持的项目。例如,到徽章的链接是支持的,因为徽章也可以通过用户的个人资料访问。
-
inappbrowser:用于在不离开应用程序的情况下在浏览器中打开链接。
-
浏览器:用于在应用程序外部使用设备默认浏览器打开链接。
-
嵌入式:用于在应用程序的新页面上显示链接的iframe(不可滚动)。
可选的语言字段仅向指定语言的用户显示。我们的示例中德语也提供了证书链接。
可选的icon字段是来自ionicons.com的图标名称。
以下是从 Moodle 应用中截取的屏幕截图,其中已移除网站博客和标签,并添加了三个自定义菜单项。前后截图展示了自定义菜单更改的影响:

图 11.10 – 移动自定义菜单
文件排除列表设置允许您指定如果学习者在课程内尝试打开哪些文件时应该显示警告。
应用标准术语针对的是教育机构,可能不适合您的设置。例如以下截图中的“学生”到“学习者”或“课程”到“模块”:

图 11.11 – 自定义语言字符串
应用中显示的单词和短语可以通过为每个条目添加单独的行并使用以下标记进行自定义:
string identifier|custom string|language code
完整的字符串标识符列表可以在docs.moodle.org/en/Moodle_app_guide_for_admins的自定义语言字符串部分找到。自定义字符串是用于通过语言代码设置的替换文本。
确保同步应用以应用配置的更改(网站管理 | 菜单 | 应用设置 | 同步)。
我们已经提到了应该激活的内置推送通知机制,我们将在下一小节中介绍。
配置移动通知
Moodle 应用支持移动平台的推送通知。我们在第一部分激活应用时已经启用了移动通知,在网站管理 | 常规 | 消息 | 通知设置中进行。要配置移动通知,通过网站管理 | 常规 | 消息 | 移动导航到以下截图所示表单:

图 11.12 – 移动消息设置
默认值连接到公共 Moodle 消息服务器。您只需点击请求访问密钥(位于底部的链接),这要求您的网站在Moodle 应用门户上注册。
选择检查和测试推送通知配置链接以测试您的移动消息配置。您将看到一个清单,指示所有必需步骤的状态,如下面的截图所示:

图 11.13 – 移动消息检查和测试推送通知
清单上有八项内容:
-
启用移动设备的网络服务:我们已在本节开始时完成了这项操作
-
$CFG->noemailever 禁用:禁用发送任何通知和消息的配置设置不得启用
-
启用移动通知:我们在本节开始时启用了这些功能;在我的系统中,它们仅在配置期间被关闭
-
通知服务器(Airnotifier)配置:我们刚刚完成了其配置
-
Airnotifier URL:指示消息服务器是否处于活动状态
-
Airnotifier 访问密钥:我们再次请求了这项
-
默认通知偏好设置:我们已在第十章的消息子节中处理了这些问题,配置技术功能,在那里您可以启用和锁定移动通道中的所有或某些通知类型
-
用户设备:至少有一个用户必须从移动设备登录到您的网站
一旦没有关键状态,您可以向连接到网站的设备发送测试推送通知,如下面的截图所示。请确保您的设备已连接到互联网,并且移动应用未打开,因为推送通知通常仅在后台接收时显示:

图 11.14 – 推送通知测试
以下是对推送通知工作原理的示意图概述。Apple Push Notification service(APNS)和Google Cloud Messaging分别是 iOS 和 Android 设备上中继推送通知的网关:

图 11.15 – 通过 Airnotifier 的 Moodle 应用通知
Moodle 的消息服务器是一个公共 Airnotifier 系统,因此存在(小)风险。这种方法可能不会被一些注重隐私的组织接受,因此您可以设置自己的通知基础设施,这包括设置本地 Airnotifier 服务器。您将在docs.moodle.org/en/Moodle_app_notifications找到如何操作以及相关资源的链接。
无论您使用公共还是本地通知服务器,您都应该让您的用户知道消息服务设施传输哪些数据,这应该是您移动应用政策的一部分,将在以下子节中介绍。
配置移动应用政策
当用户首次登录时,必须同意任何指定的网站政策。当发布新版本的网站政策时,情况也是如此。此数据保护功能在 Moodle 的网页版和应用程序中工作方式相同。有关数据隐私的更多详细信息,请参阅第十四章的遵守数据保护法规。
在 网站管理 | 常规 | 移动应用程序 | 移动设置 中,您配置用户在应用程序中导航到 关于 页面时将看到的内容。如果 应用程序策略 URL 字段留空(默认),则显示主站点的策略;如果设置,如以下截图所示,将列出指定的页面:

图 11.16 – Moodle 应用程序策略
这完成了对定制 Moodle 应用程序的章节,该章节涉及各种移动功能、设置移动通知和配置移动应用程序策略。
接下来是应用程序外观和感觉的定制。
定制 Moodle 应用程序的外观
大多数组织使用应用程序的原样,但有些希望更改应用程序的外观和感觉。Moodle 应用程序的美妙之处在于,其外观也可以从外部进行适应——即从 Moodle 本身。以下三个方面可以进行调整:
-
应用程序的登录标志
-
通过远程主题改变应用程序的外观和感觉
-
通过移动浏览器访问网站时应用程序横幅的行为
更改应用程序的登录标志
应用程序的登录屏幕显示标准的 Moodle 标志。如果网站的标志已在 网站管理 | 外观 | 标志 中配置,它将显示在用户的登录屏幕上。要比较两个版本,请查看以下截图:

图 11.17 – Moodle 应用程序登录标志(标准与自定义)
请记住,此功能仅在 Pro 和 Premium 应用程序计划中分别可用。
通过远程主题更改应用程序的外观和感觉
应用程序使用 远程主题;也就是说,样式是在其他地方指定的——在 Moodle 本身——并且动态加载到每个移动设备。
必须提供一个单独的 CSS 文件,名为 packt.css 的文件已创建并上传到我们的 theme 文件夹:

图 11.18 – 移动外观
这里有一个示例 CSS 文件,它只更改一个样式来修改应用程序工具栏的背景色为橙色:
/* Change toolbar background color to orange */
.toolbar-background
{
background: orange;
}
您如何知道在您的移动 CSS 文件中要样式化哪些元素?对于基本的定制,请查看 moodledev.io/general/app/customisation/remote-themes,其中描述了一些常见的定制。对于更严肃的应用程序主题开发,您需要创建一个可以在浏览器中运行应用程序的环境——例如,Chromium。使用浏览器的开发者工具允许您检查 HTML 并识别您希望更改的样式。
重要提示
您必须清除缓存并重新启动应用程序以应用新样式。
与 Moodle 浏览器版本的定制 CSS 一样,在移动 CSS 中可以做的事情几乎没有任何限制。为了进一步调整您的应用程序,最好涉及一位经验丰富的 Moodle 设计师或 Premium Moodle 合作伙伴。
配置应用横幅
应用横幅让用户在通过移动浏览器访问网站时知道有专门的移动应用可用。在下面的屏幕截图中,您可以看到两个 Moodle iOS 应用的应用横幅——左侧的横幅在应用尚未安装时显示;右侧的横幅在应用已安装时显示:

图 11.19 – 应用横幅的实际应用
应用横幅默认是禁用的。要激活它们,请在站点管理 | 常规 | 移动应用 | 移动外观中勾选启用应用横幅复选框。请注意,目前在 iOS 中,应用横幅仅在 Safari 网络浏览器中显示。Android 设备的应用横幅仅在应用未安装且满足其参与启发式条件时在 Chrome 浏览器中显示。
如果您正在使用品牌移动应用,您需要为 iOS 和 Android 应用提供一个唯一标识符;如果您正在使用 Moodle 应用,设置可以保留在默认值,如下面的屏幕截图所示:

图 11.20 – 应用横幅配置
应用横幅部分的最后一个设置标记为应用下载页面,并指示页面页脚和用户配置文件中显示的 URL。如果您有品牌 Moodle 应用,强烈建议在您的网站上创建一个链接到 iOS 和 Android 应用下载的专用页面。
这部分内容涵盖了自定义应用的外观和感觉,包括登录标志、远程主题和应用横幅。
摘要
本章向您介绍了如何准备、配置和自定义 Moodle 应用。
首先,我们熟悉了 Moodle 提供的不同订阅计划,包括品牌移动应用。
接下来,我们完成了学习者在使用应用之前所需的准备工作。我们审查了启用应用的设置,并配置了不同的身份验证类型。我们还简要地查看在移动设备上安装应用。
然后,我们配置了应用,为学习者提供合适的移动学习体验,这包括移动功能、通知和应用政策。
最后,我们自定义了应用的外观,通过更改登录标志、修改应用主题和配置应用横幅来调整应用的外观和感觉。
付费应用版本比免费版本具有显著更多的功能,因此如果您的组织鼓励移动学习,那么为年度费用预算是很值得的。如果您将电子学习作为学习文化的重要组成部分,您可能需要考虑品牌应用。豪华版的一个特点是提供使用统计信息,这引出了下一章的主题:报告和分析。
第十二章:通过 Moodle 报告和分析获得洞察
Moodle 从用户登录到登出期间收集各种活动的使用数据。这些数据可用于各种报告和分析活动,所有这些活动都将在本章中处理。
要了解将要涵盖的主题概述,请查看以下图表:

图 12.1 – 报告概述
Moodle 中有两种类型的报告:使用报告生成器创建的自定义报告和硬编码在 Moodle 中的基于日志的报告。
本章的第一部分将概述报告生成器,并涵盖数据源、报告构建、报告受众和计划。我们还将简要介绍一个更技术性的第三方报告生成器:可配置报告。
本章的第二部分讨论基于日志的报告。在详细概述了底层Moodle 日志框架及其组件、事件和日志存储之后,您将学习如何与 Moodle 日志进行交互。
最后,我们将处理两种使用日志作为其基础的更多报告技术:Moodle 统计数据和Moodle 分析。
我们在本章中不会涵盖系统报告——即处理特定主题的报告;它们将在相关主题被覆盖时处理。例如,备份报告将在第十六章中描述,避免失眠之夜——Moodle 备份和恢复。
在本章中,我们将涵盖以下主题:
-
使用报告生成器创建自定义报告
-
理解 Moodle 的日志框架
-
与基于日志的报告交互
-
收集统计数据
-
使用 Moodle 分析进行预测
好的,让我们从本章的第一部分开始,并使用报告生成器创建自定义报告。
使用报告生成器创建自定义报告
报告生成器最初作为 Moodle Workplace 的一部分实现,这是 Moodle 强大的灵活的学习平台,适用于企业培训和职场学习。由于其 Moodle 商业版中的流行以及其在各行业的适用性,决定将报告生成器移植到 Moodle 4。简化版已被 Moodle 采用,并已被证明是创建自定义报告的有价值补充。
因此,在我们处理数据源和报告构建之前,让我们探索报告生成器。
探索报告生成器
您可能没有意识到,您已经在之前的 11 章中使用了报告!如何?嗯,Moodle 做了一些非常聪明的事情:它使用内部报告来处理 Moodle 中的关键功能。例如,在第九章 配置教育功能 的 技能和激励 部分的证书模板列表是一个报告。配置更改的报告?您猜对了,又是另一个报告。每次您在任何 Moodle 工具中看到表格列表视图时,它很可能是一个内置的系统报告。
Moodle 区分两种类型的报告:
-
内部报告:嵌入的、预定义的报告,是 Moodle 的一部分。内部报告不能被修改或删除,因为 Moodle 依赖于它们。
-
自定义报告:由用户生成并向其他用户提供的报告。
本节专门讨论自定义报告,让我们看看 Moodle 的报告构建器是如何工作的。以下图表说明了报告工作流程的高级元素:

图 12.2 – 报告构建器工作流程
Moodle 将与其报告相关的数据存储在 Moodle 数据库 中。未来版本可能会添加外部数据源,但在撰写本文时,这是唯一可用的数据源。
最灵活的报告工具将允许您从底层数据库的每个实体中选择单个字段。然而,这要求用户熟悉整个数据库模型,该模型包含超过 100 个表以及它们之间更多的关系。相反,Moodle 提供了一些报告来源以简化报告构建器的使用。
重要提示
报告来源包含在构建报告时可用的一组预定义字段和关系。
根据所选的记录来源,将提供一定量的数据,可以通过以下机制进一步减少:选择数据字段让报告创建者决定哪些列可供使用 – 例如,学生姓名、课程名称和完成状态。应用条件让报告创建者决定哪些行可供使用 – 例如,来自特定学院的全部记录。报告的访问权限通过受众授予 – 例如,所有具有管理员角色的用户或所有属于特定班级的用户。
报告查看器可以通过筛选进一步减少数据量。筛选必须由报告创建者配置,允许您选择一个或多个标准 – 例如,按课程类别或按国家。
重要提示
报告不是静态的;它是您数据的交互式视图。
以下小节专门介绍报告工作流程的每个构建块。让我们从图表的第一部分开始:数据和报告来源。
选择数据和报告来源
在本小节中,我们将处理报告构建器的输入选项——您将了解它们是什么以及何时使用每个选项。
数据库是 Moodle 存储其数据的底层 数据源。课程、用户、课程完成情况、成绩以及其他数据,例如作者添加的学习资源信息、学习者贡献的论坛帖子以及管理员配置的系统设置,大部分都存储在数据库中。
报告源隐式定义了数据源中哪些元素(表和关系)将在报告中使用。可用的报告源集合包括用户配置文件信息、课程数据或群体成员资格。Moodle 开发者可以通过编程方式创建额外的报告源,预计记录源的数量将在未来的版本中增加。
在探索报告构建器之前,请确保在 站点管理 | 常规 | 高级功能 下启用了 启用自定义报告 设置。
让我们看看 Moodle 到目前为止可用的报告源。您可以通过 站点管理 | 报告 | 报告构建器 | 自定义报告 来管理报告,在那里您将看到一个可用报告的列表——实际上,您将看到的是一个报告。一个报告的列表!在我们的示例实例中,我们已经创建了一些报告,如图所示:

图 12.3 – 自定义报告和过滤器
报告表中显示的直观字段是 名称、报告源、创建时间、修改时间和修改者。可用的标准操作包括编辑报告内容、编辑报告详情、查看报告和删除报告。右侧有可用的过滤器,允许您通过名称、报告源和创建时间来限制显示的报告数量。
重要提示
每个报告都有一个报告源。
创建报告后,所选的报告源不能更改。要使用不同的报告源,必须创建一个新的报告。
在 报告 页面上选择 新建报告 按钮,以创建一个新的报告。随后,你将看到一个弹出窗口,如图所示:

图 12.4 – 创建新的报告
一个报告包含以下两个必填设置:名称(在报告对用户可用时显示)和报告源(定义报告数据将来自哪里)。以下是在 Moodle 中当前可用的报告源:
-
徽章:与接收者(用户)和课程关联的徽章详情
-
群体:群体数据和用户成员详情
-
课程参与者:课程、用户以及他们的注册和课程完成情况
-
课程:课程和类别详情
-
标签:标签和标签类别
-
任务日志:有关计划性和临时任务的数据
-
用户:用户详情
以下报告源已在管道中,并且在你阅读这本书的时候可能已经可用:笔记、博客、群组、评论和文件。现有的报告源也可以通过添加更多数据字段、与其他实体的关系、条件和过滤器进行扩展。
在创建新报告时,还有两个需要关注的设置:
-
包含默认设置:当启用时,报告将自动填充几个预定义的列、条件和过滤器。当你开始时,建议你勾选此选项,因为它简化了构建报告的过程,我们将在下一部分进行介绍。
-
移除任何重复行:当启用时,任何重复行将从报告中移除。
默认情况下,你或任何具有reportbuilder:edit(编辑自己的自定义报告)或reportbuilder:editall(编辑所有自定义报告)能力的人可以创建的报告数量没有限制。如果你需要限制自定义报告的数量,请转到网站管理 | 报告 | 报告构建器 | 自定义报告设置并相应地调整自定义报告限制设置。
在同一屏幕上另一个可能提高性能的设置是自定义报告实时编辑。如果禁用,则在编辑报告时数据预览将被停用;否则,它将保持更新:

图 12.5 – 自定义报告设置
当你保存报告时,你将被重定向到实际的报告构建器,我们将在下一部分进行介绍。
构建报告
在本小节中,我们将处理报告构建器提供的各种功能。你将了解这些功能是什么以及如何在现实世界场景中应用它们。
报告生成器允许你通过拖放、即时预览、行内列编辑、分组和聚合来构建和自定义报告。以下带注释的屏幕截图显示了 Moodle 报告生成器的关键元素:

图 12.6 – 报告构建器界面
报告生成器中可用的以下操作:
-
A – 数据字段面板:按实体分组的数据字段列表
-
B – 数据字段面板:实时搜索字段
-
C – 预览面板:列名和标题的行内编辑
-
D – 预览面板:选择字段聚合方法
-
E – 预览面板:预览切换
-
F – 设置面板:条件
-
G – 设置面板:过滤器
-
H – 设置面板:排序
-
I – 设置面板:卡片视图
-
J – 报告构建器菜单:访问报告标签页
对于你们中的数据库专家,将报告元素映射到它们的 SQL 对应项可能会有所帮助:
-
选择的数据字段:SELECT … FROM …
-
条件:WHERE
-
聚合和分组:GROUP BY
-
排序:ORDER BY
现在您已经对报告创建界面有了初步的了解,让我们仔细看看各种元素,这些元素可以分为两类:配置字段(列)和配置设置(行)。
配置字段(列)
本小节处理自定义报告列的可用选项。
在 Moodle 报告生成器的左侧面板中,您将看到所选报告源的所有可用字段,它们已按实体分组。每个实体都可以展开或折叠以提高可用性。您还可以搜索字段条目以限制显示的项目数量。这些项目在之前的屏幕截图中被标记为A和B。
要将列添加到报告中,请点击左侧列表中选定的字段。列将自动作为表格中最右侧的列添加。然后您可以通过标准的移动手柄重新排列列顺序。要删除列,请点击标准的删除图标。
报告中可用的字段类型有几种,可以添加为列:
-
文本字段:例如,姓氏、部门或课程名称
-
图像字段:例如,用户图片或徽章图片
大多数文本字段反映了底层 Moodle 数据库中的值。然而,一些文本字段在报告生成器中预先处理以支持附加功能:
-
超链接文本字段:主要用于直接查看数据条目 - 例如,用户资料或课程
-
计算文本字段:提供数值 - 例如,类别中的课程数量
-
分组文本字段:为了将多个数据点作为一个单元格提供 - 例如,队列中的成员
报告生成器完全支持自定义字段,如自定义用户资料字段或自定义课程字段。它们将像任何内置变量一样出现在可用字段列表中。
报告生成器最强大的功能之一是其对聚合的支持。看看以下三个报告,它们具有相同的字段,但应用于徽章接收者列的聚合方法不同:

图 12.7 – 聚合
在第一个报告中,未应用无聚合,因此显示所有数据条目。在第二个报告中,选择了逗号分隔值选项,它在一个单元格中显示多个用户名。在最后一个报告中,选择了计数方法,显示了每个徽章的接收者数量。
根据选择的数据字段,您有多种方法可供选择,如下表所示,包括内部使用的 SQL 函数:

图 12.8 – 聚合操作
聚合函数计算一组值并返回单个值。例如,计数接受一组值并返回——您猜对了——项目数量。移除任何重复行设置在列聚合时没有效果。
结合课程参与者记录源和聚合方法,你可以创建强大的报告,例如以下内容:
-
每门课程注册的用户数量:课程全名(不聚合),用户全名(数量)
-
每门课程注册的用户:课程全名(不聚合),用户全名(逗号分隔的独立值)
-
每门课程的完成次数:课程全名(不聚合),课程完成(独立计数)
对于哪种字段类型有哪些可用方法,没有系统化的分类。对于每个数据字段,Moodle 提供了一组可能的聚合方法。
观众也有选项下载表格数据为各种格式,即 CSV、XLSX、HTML、JSON、ODS 和 PDF。您可以通过转到网站管理 | 插件 | 数据格式 | 管理数据格式来减少或重新排列该列表中的选项。XLSX 格式对于使用 Excel 的图表工具可视化数据很有用。
现在我们已经用完了在报告中自定义列的所有选项,让我们看看如何配置表格中的第二个维度:行。
配置设置(行)
本小节讨论了自定义或限制报告中的行的可用选项。这可以通过右侧的设置面板完成,在那里您可以访问条件、过滤器、排序和卡片视图折叠面板。以下四个小节将描述这些配置选项。
条件
条件允许您限制报告观众所看到的数据量。例如,您可能希望从报告中排除任何已挂起的用户。
重要提示
条件是一组预定义的标准,在查看报告时始终应用。在查看模式下,无法更改条件。
根据所选的报告源,可用条件列表可能略有不同。
大多数报告源中有一个有趣的条件可用,即选择用户,它有三个选项:
-
任何用户:显示所有用户。
-
当前用户:报告只显示关于报告观众的数据。使用这种强大的模式,您可以创建显示个性化数据的报告,具体取决于谁在查看报告。例如,如果您希望创建一个显示报告观众在每个课程中进度的报告,请选择课程全名和学生进度字段,并将选择用户条件设置为当前用户。当学生查看报告时,他们只会看到他们注册的课程中的进度。
-
选择:与当前用户相同的原理,但你可以选择一个或多个用户。
两个更多条件让你选择值:选择课程和选择类别,包括一个查看所有子类别的选项。
过滤器
以下两个截图显示了配置过滤器(左侧)以及从用户视角查看报告时前三个条目看起来像什么(右侧):

图 12.9 – 报告过滤
我们在选择用户过滤器中描述了当前用户选项,它为每个查看者创建一个独特的报告。此类过滤器也会影响自动创建并按计划发送给用户的报告(请参阅下面的安排报告部分)。
你可以添加你想要的任意数量的过滤器。此外,过滤器列表不仅限于报告中显示的字段。例如,在用户报告中,你可能添加一个过滤器来缩小搜索范围,仅限于个别认证方法,即使该字段在报告中本身不可用。
排序
四个设置中的倒数第二个设置处理数据呈现的顺序。
重要提示
排序定义了字段排序的初始顺序。
在以下截图中,数据按类别名称(升序排列)、课程简称(降序排列)和课程全名(升序排列)排序:

图 12.10 – 报告排序
在查看模式下,前面的顺序将最初被应用。一旦用户点击列名,数据将按此字段排序;当再次点击同一列时,排序顺序将反转。
卡片视图
卡片视图功能支持报告构建器中的响应式布局设计。卡片视图允许你在块在侧边栏或使用较小设备时配置报告布局。当在小型屏幕上显示时,报告将自动切换到卡片视图。
报告受众
报告受众表明哪些用户有权访问报告。它们也可以用作计划报告的收件人。要访问受众,请选择报告的受众选项卡,在那里你可以创建以下受众:
-
所有用户:使用此受众群给所有用户授权
-
分配的系统角色:选择至少一个系统角色
-
手动添加的用户:选择至少一个用户(通过姓名或电子邮件地址)
-
队列成员:选择至少一个队列
-
网站管理员:Moodle 管理员 – 即你以及所有也是管理员的人
要确认现在哪些用户有权访问报告,切换到访问选项卡,正如你可能已经猜到的,这又是另一个系统报告。现在我们知道谁被授予了访问报告的权限,让我们配置报告发送到指定受众的时间。
安排报告
默认情况下,所有报告都作为拉取报告提供;也就是说,用户必须主动选择和查看报告。本节提供了配置通过报告调度器自动发送报告(称为推送报告)的说明。让用户登录查看报告不如让报告直接进入他们的收件箱有效。
要访问调度器,请选择报告的调度选项卡。是的,调度列表又是另一个具有预定义过滤器的系统报告:

图 12.11 – 调度报告 I
点击右上角的新建调度按钮以创建新的报告调度。然后您将看到一个包含以下四个部分的弹出窗口:

图 12.12 – 调度报告 II
这四个部分包含以下设置:
- 屏幕的常规部分包含有关调度的信息,包括要发送的报告、报告应发送的格式以及时间设置。
名称仅在调度列表中使用。格式下拉菜单允许您选择报告的文件格式。选项包括 CSV、XLSX、HTML、JSON、ODF 和 PDF。您可以通过访问站点管理 | 插件 | 数据格式 | 管理数据格式来减少或重新排列该列表中的选项。
cron进程触发发送报告的执行。
本节最后的设置reportbuilder:scheduleviewas能力决定了报告是否可以调度为他人查看。
-
在受众部分,您指定收件人是谁。您需要选择至少一个受众,如前所述。如果尚未指定任何受众,将显示警告。
-
调度部分包含自定义消息,其中包含任何电子邮件消息的两个标准元素:主题和正文。在撰写本文时,不支持占位符,因此您必须相应地调整消息文本。
-
在高级部分,只有一个选项,允许您指定如果报告为空时会发生什么。直观的选项有发送空报告的消息、不发送报告的消息和不发送消息(默认)。
有了这些,我们已经提供了报告生成器的概述,这是一个生成自定义报告的潜在强大工具。然而,它有一些限制,我们将在下一节中讨论。
报告生成器的限制和替代方案
报告构建器是一个基于预定义报告源创建报告的强大工具。在撰写本文时,可用的报告源数量相当有限,但预计这种限制将在不久的将来得到改变。Moodle Workplace (docs.moodle.org/en/Report_builder) 已经包含比 Moodle 更多的报告源,所以请留意新源很快将被添加。
我们之前提到,报告创建者的主要优势是您不必熟悉 Moodle 的底层数据库模式。然而,一些管理员发现报告源的概念过于限制性,希望创建更灵活的报告。"可配置报告"(moodle.org/plugins/block_configurable_reports) 是一个流行的 Moodle 第三方插件,一旦安装,就会作为一个块出现。该插件支持以下五种类型的报告:
-
课程报告:使用课程数据的报告
-
类别报告:使用类别数据加上可选嵌入课程报告的报告
-
用户报告:使用用户数据及其课程活动的报告
-
时间线报告:针对课程、用户及其活动的跨时间报告
-
SQL 报告:可以使用任何有效的 SQL 语句来查询 Moodle 数据库
根据选择报告的类型,提供不同的选择标准(字段、条件、排序和计算)。此外,可以指定用于深入分析的过滤器,可以创建布局,并可以设置允许运行报告的权限。此外,插件可以绘制不同类型的图表。
可配置报告的独特之处在于您可以根据自定义 SQL创建报告。如果您熟悉 SQL 语言和底层 Moodle 数据库模式,您可以添加查询,例如以下屏幕截图安排中所示:

图 12.13 – 可配置报告样本
在前面的屏幕截图中,您还可以看到一个链接到SQL 贡献报告列表,这是一个创建报告的非常好的起点(这就是我获取示例报告的 SQL 查询的地方)。
这就结束了基于 Moodle 报告构建器的自定义报告部分,我们在这里介绍了工具的工作流程、可用的数据源和配置。除了创建灵活的自定义报告外,Moodle 还附带了一些预定义的报告,这些报告利用了本章引言中提到的日志框架。
理解 Moodle 的日志框架
Moodle 有一个功能强大的内置日志框架,正如预期的那样,它是完全可定制和可扩展的。日志机制背后的理念如下:
-
用户执行一个动作,触发一个事件。一个例子是学生在论坛上发帖。
-
日志管理器实体监控事件并决定是否将其记录或忽略。网站范围的日志管理器设置确定此行为。
-
日志管理器将数据发送到活动的日志存储插件,该插件过滤或丰富信息。传递的数据可能包含 IP 地址和时间戳。
-
然后将数据写入配置的日志存储。
图表的上半部分显示了此日志工作流程:

图 12.14 – 从事件到报告
现在,让我们看看当用户请求报告时会发生什么,这在上半部分的图中表示:
-
报告模块通知日志管理器,日志管理器将请求传递给日志存储插件。如果已设置多个日志存储,则用户必须选择一个。
-
日志存储插件从日志存储中读取相关数据,并将其传递回日志管理器。
-
报告模块生成报告,然后将其显示给用户。
现在,让我们更详细地查看 Moodle 日志框架的各个组成部分,从事件开始。
理解事件
两个紧密相关的元素处理 Moodle 中的事件 – 事件列表和事件监控规则:

图 12.15 – 事件、事件列表和事件监控规则
这些概念已在先前的图中说明,将在本小节的剩余部分详细描述,从事件列表开始。
事件列表
Moodle 中的大多数操作都会触发一个事件。您可以通过访问网站管理 | 报告 | 事件列表来查看所有可用事件的列表。随着时间的推移,该列表将增长,包括内部和外部事件。每个事件都包含以下元素:
-
事件名称:事件的名称和唯一的内部标识符
-
组件:事件所属的 Moodle 组件;例如,核心、课程模块或某些其他部分,如统计数据或日志
-
教育水平:有三个级别:参与、教学和其他
-
数据库查询类型:可能发生四种查询类型,即创建、读取、更新和删除(CRUD)
-
受影响的表:正在受影响的数据库表
-
自:引入事件时的 Moodle 版本
-
遗留事件:在遗留日志存储中触发的事件(这仅包含从 2.6 版本引入事件时的事件)
以下截图显示了按用户过滤的一些事件:

图 12.16 – 事件列表(按用户过滤)
您可以通过名称、组件、教育水平和数据库查询类型来过滤列表。通过点击事件名称,您将看到相同信息的更详细展示。在截图排列中,我们已选择用户添加到班级事件。除了来自事件列表中已熟悉的字段外,截图还显示了两个额外的信息项:
-
父事件:在内部,事件是按层次结构组织的,但信息主要与开发者相关。
-
tool_log); 事件监控本身;班级同步模块,确保每次用户被添加到班级时,他们也将被注册到相关课程;以及核心系统本身。
事件信息主要针对管理员,主要用于信息目的。然而,在设置事件监控规则时,它是有相关性的。
事件监控规则
管理员(以及具有tool/monitor:managerules能力的用户)可以定义您可以订阅的事件。这些活动模式表示为包含事件以及频率的规则。一旦检测到这种模式,就会触发事件,向所有订阅者发送消息。
虽然具有编辑教师权限的用户可以在课程级别设置自己的规则,但您作为管理员,更有可能定义一组必需的规则,教育工作者将订阅这些规则。
首先,您必须通过导航到网站管理 | 报告 | 事件监控规则来启用事件监控。
让我们通过添加新规则按钮添加我们的第一个事件规则。一旦您输入了规则名称,请选择监控区域。列表中的值与您在组件下拉菜单中遇到的值相同,如前述事件列表所示。一旦选择,事件列表将填充该组件支持的所有可用事件。描述是可选的,但建议您为此提供信息,以便潜在订阅者。通知阈值…分钟组合指定在指定时间段内需要多少事件才能发送通知消息属性。此消息的正文可以包括以下截图所示示例消息文本中的任何或所有占位符:

图 12.17 – 事件监控规则和订阅
任何具有tool/monitor:subscribe能力的用户都可以通过偏好下的杂项部分的事件监控链接订阅事件规则。一旦事件规则有订阅,则规则编辑将受到限制。
在订阅课程之前,您必须选择一个课程进行监控(网站覆盖所有课程)。从现在起,当订阅的规则被触发时,将发送通知消息。
现在我们已经详细介绍了事件,让我们来看看我们图表的日志组件。
日志和日志存储
日志涉及三个组件:日志管理器、日志存储插件和物理日志存储。
日志管理器是一个内部组件,它监控事件并将数据传递给所有启用的日志存储插件。Moodle 自带一个预定义的日志管理器;然而,将来这可能会被其他日志管理器插件所取代。目前,作为管理员,你无法配置日志管理器本身。
日志存储插件与一个物理日志存储相关联,并确定存储和读取哪些数据。导航到网站管理 | 插件 | 日志 | 管理日志存储,以查看 Moodle 的三个核心日志存储插件:标准日志、外部数据库日志和旧版日志。我们将忽略旧版日志,因为随着时间的推移,它们将被停止使用。
标准日志存储已取代了旧版日志;它支持所有新的日志概念,并提供了更好的性能。在其设置中,你可以指定是否记录访客访问,是否以JSON 格式(而不是序列化的 PHP)存储,以及保留日志的时间和其写入缓冲区大小。
如果你希望将日志信息写入与 Moodle 分开的数据库,你可以配置一个外部数据库日志存储。这种额外的数据存储对于你希望收集数据进行更详细的分析或数据仓库操作非常有用。这在下图中显示:

图 12.18 – 配置外部数据库日志存储
默认情况下,支持与安装 Moodle 时相同的数据库。数据库主机、用户、密码和名称设置与我们在第一章“安装 Moodle”中介绍的一致。此外,你必须指定一个mdl_logstore_standard_log。确保你测试连接(链接在屏幕顶部);如果成功,检查将显示外部表包含的列。如果你网站上的日志流量很大且性能是问题,你也可以指定持久数据库连接的各种设置。
现在是外部日志存储插件的精彩部分。你可以指定过滤器,这些过滤器将在存储数据时被应用:
-
记录访客操作:这会告诉你访客操作是否被存储。通常情况下,除非你希望记录所有用户的流量,否则不需要这样做。
-
教育水平:这些是我们事件部分遇到的三种类型,即教学、参与和其他。
-
数据库查询类型:这些是我们事件部分遇到的四种 CRUD 类型,即创建、读取、更新和删除。
当隐私法规不允许您存储某些用户或类型的操作时,过滤日志很有用(参看第十四章,遵守数据保护法规),以及当从日志存储报告中报告不需要特定操作时;这也会对性能产生积极影响。
重要提示
外部数据库日志补充了标准日志,而不是替代它们。禁用标准日志将导致基于日志的系统报告出现故障。
您可以从moodle.org/plugins/?q=type:logstore添加额外的日志存储。一个有趣的选项是Logstore xAPI,它将 xAPI 语句(也称为 Tin Can)发送到您选择的 LRS。
这就结束了关于日志组件的子节,它涵盖了日志存储管理器、日志存储插件以及日志存储本身。我们流程图中的最后一个元素是日志报告,我们将在下一节中介绍。
与基于日志的报告交互
Moodle 中有两种内置报告类型:一种是从日志存储提供数据的报告,另一种是在没有日志存储输入的情况下即时生成的报告。您可以通过访问站点管理 | 插件 | 报告 | 管理报告来查看报告列表,如下面的注释截图所示(左侧的图标表示它是一个课程、系统或其他类型的报告):

图 12.19 – 系统报告
在这里,您可以查看报告何时需要日志存储,如果需要,哪些是受支持的。我们将重点关注(实时)日志,因为它们是日志报告的基础,然后再转向统计和分析。
请记住,从基于日志的报告中检索的大部分信息在课程级别也对教师可用。虽然教育工作者主要在教学方法中使用这些信息(以监控进度和衡量表现),但作为管理员,您的角色是在整个站点范围内查看这些数据。此外,如果发生任何索赔、问题或其他异常情况,例如,如果学生坚持声称提交了系统上没有的作业或教师无法从家中登录,您很可能会被找到。鉴于此类数据的敏感性和您组织的政策,必须通过角色和能力(如果可用,添加到每个报告的右侧)来停用某些操作的访问权限。
根据您的设置和配置,Moodle 会记录用户执行的每个操作的详细日志。默认情况下,标准日志中的每个记录(或点击)包含以下数据:
-
谁(用户)
-
什么(操作)
-
何时(日期和时间)
-
在哪里(IP 地址)
通过访问网站管理 | 报告 | 日志可以访问网站范围内的日志。在页面顶部,您可以通过过滤器交互式地深入到数据中,这在需要定位有关个人、活动或课程的数据时很有用。例如,如果学生声称他们提交了无法找到的作业,跟踪日志将能够提供线索。可用的过滤器如下:
-
课程:选择特定的课程或整个 Moodle 网站(网站日志)。
-
组:选择特定的组或所有组。此过滤器仅在所选课程中启用了组模式时显示。
-
参与者:选择特定的用户或所有参与者。
-
日期:指定特定的某一天或所有活动日。不幸的是,目前尚不能指定日期范围。
-
活动:选择是否要运行所有活动或网站错误的报告 – 当选择课程时,此列表会发生变化。
-
操作:您可以选择所有操作、创建、查看、更新、删除和所有更改。
-
教育水平:您可以从所有事件、教学、参与和其他中选择。我们在查看事件时遇到了后三个选项。
-
日志存储:如果已设置多个日志存储,您必须选择数据正在从中读取的那个。
一旦您选择了课程并点击了获取这些日志按钮,每个下拉菜单的内容会根据上下文敏感地改变。例如,参与者菜单包含在课程中有角色的所有用户的姓名,而活动菜单则填充了活动和资源。如果您查看 Moodle 的下拉菜单,您将看到内部发生的情况。Moodle 临时重定向到所选课程内的报告工具,其中课程日志查看器被调用,外观相同。一旦您选择了过滤条件,就会显示报告,如下所示:

图 12.20 – 日志数据
此表格信息以用户访问日期和时间的逆序显示;也就是说,最后访问的记录首先显示。表格的列代表以下信息:
-
时间:击中的时间。
-
用户全名:用户的名字 – 如果选择了特定用户,则每个行将显示相同的值。
-
受影响用户:如果操作影响其他用户,将显示此信息。
-
事件上下文:事件被触发的上下文。一个链接会引导您到上下文,例如,一个课程。
-
组件:事件组件(参考本章前面的事件部分)。
-
事件名称:被触发的那个事件。当选择时,将打开一个包含事件的弹出窗口。
-
描述:用户所做事情的简要描述——这对于查看正在访问的资源或检查个人是否查看过课程非常有用。使用内部 ID,如用户 ID、课程 ID 或论坛 ID。
-
cli),恢复操作(restore),Moodle 本身(web),网络服务(ws),或任何其他来源(other)。 -
IP 地址:未解析的 IP 地址;这对于确定用户访问页面的位置很有用(例如,从家中或组织内部)。
在结果页面底部,您可以以多种格式(CSV、XLSX、HTML、JSON、ODS 或 PDF)下载表格数据。您可以通过转到网站管理 | 插件 | 数据格式 | 管理数据格式来减少或重新排列该列表中的选项。
当您点击日志中的 IP 地址时,将打开一个新页面,显示用户 IP 的注册位置作为世界地图上的一个标记(这不适用于本地或私有 IP 地址),如下所示:

图 12.21 – IP 地址的地理位置
默认的查找工具称为NetGeo(www.geoplugin.com)。为了获得更准确的结果,您需要安装MaxMind GeoLite数据库的本地副本(dev.maxmind.com)或指定 Google Maps API 密钥。这两个设置都可以在网站管理 | 常规 | 位置 | 位置设置中的 IP 地址查找部分找到。
Moodle 提供过去一小时的实时日志,可以通过导航到网站管理 | 报告 | 实时日志来访问。这是一个预先准备的报告,显示了前 60 分钟内发生的活动;它每 60 秒自动更新一次。您可以通过日志阅读器选择器旁边的按钮暂停实时更新。实时日志在您更改了配置(例如,身份验证或注册插件)并希望确保其正确工作时很有帮助。或者,您也可以坐下来观察网站上发生的事情。屏幕格式与先前的标准日志相同。请注意,实时日志中的第一条记录是您查看实时日志的情况!
当从活动下拉菜单中选择网站错误时,将显示所有错误(主要是失败的登录尝试)。例如,以下屏幕截图显示的两个无效登录尝试,以及两次尝试向用户发送电子邮件失败:

图 12.22 – 错误日志
定期检查错误日志是一个好习惯,以便识别网站上的问题和潜在的未授权访问尝试。这些报告也可以设置为通过电子邮件发送给网站管理员(参考第十三章,确保 Moodle 安全)。
现在,你应该已经准备好完全与 Moodle 日志交互。本节中提到了几次统计;我们将在下一节中查看 Moodle 支持的统计分析以及我们如何从中受益。
收集统计
本节将教你如何设置和解释Moodle 统计。
Moodle 内置了一个统计模块,默认情况下是禁用的,因为该组件在磁盘空间使用和,更重要的是,内存使用方面非常消耗资源。
重要提示
只有在你需要这些信息并且可以接受一些可能显著的性能降低时,才使用统计模块。
在网站管理 | 常规 | 高级功能下选择启用统计,并通过导航到网站管理 | 服务器 | 统计来配置它,以下参数将可用:
-
最大处理间隔:启用统计模块后,Moodle 利用日志来推导统计信息。在此,你需要指定 Moodle 应该回溯多长时间来收集统计。请注意,这是一个相当消耗资源的操作。
-
最大运行时间:你可以限制统计收集过程允许运行的时间;这是另一种帮助你避免对系统造成过大负担的机制。
-
处理天数:每次统计执行中将处理的天数。
-
用户阈值:在此,可以指示统计模块忽略注册用户数量少于一定数量的课程。
统计计算通过\core\task\stats_cron_task计划任务在后台进行。强烈建议其执行时间不要与网站备份冲突,因为这两个操作都可能非常消耗资源。
让我们通过访问网站管理 | 报告 | 统计来查看一些统计信息。一旦你选择了课程、报告类型(视图、帖子、登录或所有这些),以及时间段,就会显示一个图表和一些表格信息。显示的数据表示特定一天上的点击量,按角色细分:

图 12.23 – 统计报告
如果没有数据显示,你可能需要重新调整你的统计设置。此外,在统计收集过程中,可能会显示一条消息,说明模块处于追赶模式。如果是这种情况,你必须等待处理完成。
一个报告显示了在一段时间内关于课程的某些基本统计信息,并使用了统计数据,位于网站管理 | 报告 | 课程概览。选项如下(你可以在docs.moodle.org/en/Course_overview_report找到报告度量计算):
-
最活跃的课程
-
最活跃的课程(加权)
-
参与度最高的课程(注册)
-
参与度最高的课程(查看/帖子)
每个报告都显示一个表格,并通过图表可视化课程数据。
我不知道你们的情况如何,但这两个统计报告提供的信息非常令人不满意。考虑到模块对我们系统的负担以及可用的数据量,这似乎是一个非常简单——有些人可能会说无用的——显示统计信息的方式。
统计模块的一个扩展是一个名为概览统计(moodle.org/plugins/report_overviewstats)的插件,它为您提供了关于登录用户、用户国家、首选语言以及一些课程统计的更多分析。虽然这比统计功能有所改进,但它仍然远非理想。
如果描述的统计功能不能满足您对使用数据的渴望,您可以考虑使用Matamo、Piwik(两者都注重隐私且开源)和Google Analytics等工具。这些网络日志分析器是功能丰富的服务,可以跟踪您 Moodle 站点的任何流量,并提供关于访客、流量来源、内容、用户定义的目标以及更多统计信息。
您有两个选项可以将网络流量分析支持添加到您的 Moodle 系统中:
-
一个专门支持之前提到的任何或所有工具的插件,例如,Web Analytics (moodle.org/plugins/tool_webanalytics)。
-
一个支持网络日志分析器的主题。在第七章“增强 Moodle 的外观和感觉”中提到的两个最受欢迎的第三方主题,提供不同级别的集成:Moove仅支持您的 Google Analytics V4 代码,而Adaptable有一个专门的分析选项卡,您可以在其中分别自定义 Google Analytics、Matamo 和 Piwik 设置。
Piwik、Matomo 和 Google Analytics 对历史浏览数据进行复杂的统计分析。另一方面,Moodle Analytics 则应用机器学习技术和模型来预测未来的结果,这是本章最后部分的主题。
使用 Moodle Analytics 进行预测
在本节中,您将了解Moodle Analytics,包括如何创建学习分析模型。
自定义和基于日志的报告是描述性的;它们告诉观众发生了什么,但不知道为什么,也不预测结果或建议用户如何改进。虽然报告告诉我们关于谁、什么、何时和何地的信息,但学习分析旨在解释为什么以及效果如何。
重要提示
Moodle Analytics 根据(历史)日志数据和当前行为预测或检测学习中的未知方面。
Moodle Analytics 支持两种类型的模型:
-
基于机器学习的模型:复杂的模型使用数学工具进行预测;例如,有很高可能挂科的课程
-
静态模型:简单模型基于假设,不需要复杂的分析;例如,未选修课程的
以下图表说明了 Moodle 分析工作流程的关键组件(改编自docs.moodle.org/dev/Analytics_API):

图 12.24 – Moodle 分析组件和工作流程
让我们从左上角开始回顾工作流程:
-
日志是我们之前提到的所选日志文件。将根据分析模型和所选分析间隔创建日志的子集。
-
指标,也称为预测器或特征,是你认为会导致准确目标预测的因素。一个指标可能是论坛参与度或教师可用性。目标,也称为类别,代表模型试图预测的事件。一个流行的目标是“有辍学风险的学生”。
-
前三个步骤的过滤和增强结果产生模型数据,该数据用于当前预测模型。
-
模型本身是通过使用机器学习(ML)算法创建的,这些算法执行所有幕后复杂的计算。我们可以将这个元素视为一个黑盒,并依赖于机器学习后端正确运行。
-
预测是数据中的模式 – 模型数据越大、越多样化,预测就越准确。一个预测可能是一个规则,例如“如果论坛参与度低且教师可用性低,那么有辍学风险的学生就高。”
-
当达到某些阈值时,通过预测生成见解。基于这些见解,应采取行动。
最受欢迎的机器学习技术之一是分类。分类的目标是通过基于训练数据集构建模型来预测目标,然后利用该模型在测试数据中预测目标。在我们的学习分析环境中,一个典型的目标是对学生是否会通过或失败,或者他们是否可能辍学的预测。
这种学习方式被称为监督学习,因为学习过程在构建模型的同时被引导向目标。以通过/不通过的场景为例,模型构建者(你!)会决定哪些数据应被视为指标;例如,课程进度、成绩和参与度水平。
一些典型的分类应用包括贷款审批、流失预测、医疗诊断和垃圾邮件检测。学习分析通常处理具有一个待预测目标(例如,通过或失败)的分类问题。Moodle 分析目前仅支持这种二进制分类。
我们只是触及了 Moodle 分析内部运作的非常基础的部分。如果你希望深入了解这个迷人的主题,一些优秀的在线资源可供参考,例如 docs.moodle.org/en/Using_analytics 和 docs.moodle.org/dev/Analytics_API。
好了,关于所有抽象的机器学习和学习分析理论的讨论就到这里。然而,在我们能够创建第一个 Moodle 分析模型之前,需要进行一些初始配置,我们将首先介绍这些配置。
设置 Moodle 分析
首先,确保在站点管理 | 常规 | 高级功能下分析选项已开启。设置 Moodle 分析需要配置两种类型的设置:教育领域知识和一些技术参数。
在站点管理 | 常规 | 分析 | 站点信息下,你应该提供有关大多数教育者和学习者如何使用你的 Moodle 站点的信息。这种教育领域知识可以被机器学习算法考虑。以下截图显示了需要配置的说明性字段:

图 12.25 – 分析站点信息
你可以通过访问站点管理 | 常规 | 分析 | 分析设置来找到技术配置,其中参数已经详细解释:

图 12.26 – 分析设置
大多数这些设置可以轻松映射到之前展示的 Moodle 分析工作流程中。两个计划任务(\tool_analytics\task\train_models和\tool_analytics\task\predict_models)分别遍历启用的模型以训练模型和生成预测。虽然你可以通过禁用仅通过命令行执行分析过程设置来手动执行这些过程,但这仅推荐用于测试目的,不适用于生产环境。
一旦完成领域和技术设置,我们就可以创建分析模型。
创建分析模型
分析模型在站点管理 | 常规 | 分析 | 分析模型下进行管理,如下截图所示:

图 12.27 – 分析模型
对于每个模型,三个相关字段是指标、分析间隔和洞察:
-
指标:基于许多 Moodle 实例和一些 Moodle 合作伙伴站点中的学生参与经验模型,有近 60 个预定义的指标可用。这些指标分为两种类型:认知深度和社会广度。您可以在docs.moodle.org/en/Learning_analytics_indicators上找到有关 Moodle 分析指标的更多详细信息。
-
分析间隔:这种时间分割方法定义了 Moodle 何时计算预测以及将考虑用于这些预测的日志部分。
-
洞见:这些是“有趣”的预测结果。选择取决于模型类型,例如,有退课风险的用户。这些洞见也会触发事件,例如,向课程教师发送通知或向学生发送消息。以下是一个提供给课程教师的洞见样本,他们也可以提供反馈,这些反馈将在后续分析中予以考虑:

图 12.28 – 洞见示例
要调整模型的设置,请选择操作菜单中的标准编辑选项。以下是一个有退课风险的学员模型的示例:

图 12.29 – 分析模型详情
您可以修改指标和分析间隔的列表。此外,您可以将模型构建限制在上下文中 – 即选定的课程类别和课程。
重要提示
当模型被修改时,所有之前的预测将被删除。
在选择目标后创建新模型时,您必须配置相同的参数。以下是在 Moodle 中可用的以下目标(模型将预测的内容):
-
有可能无法达到课程分配能力的学员(机器学习)
-
有可能无法满足课程完成条件的学员(机器学习)
-
有退课风险的学员(机器学习)
-
有可能无法达到课程最低通过分数的学员(机器学习)
-
有可能不开设的课程(静态)
-
最近未访问课程的学员(静态)
-
尚未访问课程的学员(静态)
-
即将到期的活动(静态)
在本节开头,我们提到 Moodle 分析支持基于机器学习和静态模型。在静态模型中,指标是固定的;您无法像在基于机器学习的模型中那样修改这些指标。
在操作菜单中还有其他几个特定于分析的命令(其中一些选项仅在站点管理 | 常规 | 分析 | 分析设置下的仅通过命令行执行分析过程设置被禁用时才会出现):
-
执行计划分析:使用系统上可用的新数据训练机器学习算法,并为正在进行的课程获取预测
-
洞察报告: 根据模型的不同,将显示已发现的洞察以及关于个别目标的信息
-
导出: Moodle 分析模型可以以 JSON 格式导出,并在选择 新建模型 按钮后通过 导入模型 选项导入
-
无效站点元素: 列出无法由该模型分析的元素
-
清除预测: 清除所有模型预测和训练数据
Moodle 分析是 Moodle 中最强大的工具之一,但同时也是使用最少的一个。无论是由于其复杂性还是对机器学习算法缺乏信任,我不清楚。希望我们已经在这方面提供了一些启示,并为你提供了向学习者和教育者提供 Moodle 分析技能。
摘要
Moodle 为教师和管理员提供了一系列的报表功能。在本章中,我们专注于管理员交互或需要配置并提供给用户的报表工具。即使你不是数据狂热者,我也希望所提供的报表功能能帮助你在日常管理工作中。
新引入的报告生成器是一个灵活且交互式的自定义报告工具。你已了解了报告生成器,包括数据源、报告构建、受众和计划。未来可提供的报告源越多,你将越不需要第三方工具,例如我们简要介绍的配置报告。
在本章的第二部分,你了解了 Moodle 记录框架的各个方面,包括其组件、事件和日志存储。你还与 Moodle 日志进行了交互,这是管理员日常工作中最常用的工具之一。
记录框架为统计和学习教育分析提供了基础,我们已在专门的章节中进行了介绍。
Moodle 报表,尤其是新引入的报告生成器,最近经历了一次重大改观。预计很快将引入更多功能。另一个不断改进的主题是 Moodle 的安全性,这是下一章的主题。
第十三章:确保 Moodle 安全
Moodle,就像任何其他网络应用一样,存在被滥用的潜在风险。Moodle 专门设置了一个章节,用于安全设置,管理员可以使用这些设置来精细调整其安全性。在概述 Moodle 的安全设置之后,你将了解以下主题:
-
安全通知:你将学习如何设置 Moodle 的通知机制,以警告你潜在的安全问题,并检查内置的安全报告。
-
用户安全:我们将探讨 Moodle 密码配置、用户详细信息保护和垃圾邮件预防。
-
内容安全:我们将处理在 Moodle 内创建的内容的潜在问题及其可见性。你将学习如何限制 Moodle 内创建的内容、设置内容可见性以及配置防病毒扫描器。
-
root目录和 cron 执行)、支持 HTTPS 以及与 IP 阻止器协同工作。
在我们介绍上述四个主题之前,让我们先概述一下 Moodle 的安全设置,涉及技术栈的所有层次。
Moodle 安全 – 概述
Moodle 对安全极为重视,任何潜在问题都得到最高优先级处理。严重问题的修复漏洞通常会导致小版本的发布,强调该主题的重要性。
以下图表展示了典型 Moodle 设置的层次结构,其中必须确保每个组件的安全性:

图 13.1 – Moodle 安全
系统的安全性与其最薄弱的环节一样好。由于 Moodle 依赖于底层软件、硬件和网络基础设施,安全可能在这些多个领域中被破坏。由于本书专注于 Moodle 管理,我们只涵盖 Moodle 本身的安全元素。以下领域不涉及,需要咨询相关文档和安全问题专家:
-
软件:如第二章《探索 Moodle 系统》所述,Moodle 的关键组件包括一个Web 服务器(通常是 Apache 或 Microsoft IIS)、一个数据库服务器(MySQL、Microsoft SQL Server、PostgreSQL、MariaDB 或 Oracle)以及一种编程语言(PHP)。还需要额外的 PHP 和操作系统扩展,例如,以支持上述数据库系统。
-
操作系统:操作系统的安全性始终面临被恶意利用的威胁。操作系统加固是系统管理员的一项关键任务。
-
硬件:Moodle 运行在内部或外部托管的服务器上(物理或虚拟)。在这些系统中,持续的安全和改进正在进行,这反映在数据中心和托管提供商采取的日益扩大的预防措施中。
-
网络:任何属于网络系统的系统都可能存在潜在的安全漏洞。防火墙、代理服务器和路由器的配置,以及一般网络安全性,是保护您的系统免受攻击的关键方面。
许多这些主题在docs.moodle.org/en/Security中有详细说明。
重要提示
适用于所有元素的一条规则是应定期安装最新的软件更新。
随着 Moodle 的复杂性和受欢迎程度的增加,确保采取所有可能的措施以防止任何安全问题变得至关重要。让我们从安全通知开始。
配置安全通知
Moodle 已经在其网站上设立了专门的页面moodle.org/security,用于处理安全问题。如果您注册了您的 Moodle 实例,这是强烈推荐的,您的电子邮件地址将自动添加到安全警报邮件列表中,这将在公共发布前两天通知您有关漏洞和更新的信息。要设置此功能,请转到站点管理 | 常规 | 注册,填写所需信息,然后点击注册您的站点按钮。
或者,关注@moodlesecurity 的 Twitter 账号,以获取任何 Moodle 安全公告的通知。
一旦您了解了一般的安全问题,就需要关注您 Moodle 系统中可能存在的任何潜在问题。在本节的剩余部分,我们将讨论设置 Moodle 通知和检查内置的系统报告。
设置 Moodle 通知
当您导航到站点管理 | 常规 | 通知时,Moodle 将显示您网站上的任何潜在问题。此链接还启动了已安装的 Moodle 更新和插件(请参阅第八章,理解 Moodle 插件)。
下面的屏幕截图显示了四条消息;第二和第三个问题显然属于安全类别:

图 13.2 – Moodle 通知
Moodle 在其日志文件中监控失败的登录尝试,如第第十二章中所述,通过 Moodle 报告和分析获得洞察力。重复的登录失败可能表明未经授权的用户正在尝试访问您的系统。除了定期检查您的日志文件外,您还应在导航到站点管理 | 常规 | 安全 | 通知时配置设置以监控这些活动:

图 13.3 – 安全通知
您可以指定用户是否会在屏幕上看到有关之前失败的登录消息,以及谁会收到关于登录失败的电子邮件。您还可以设置从同一 IP 地址发起的失败登录次数,这将触发这些通知。
虽然这并不是一个万无一失的威胁警报,但它可能会突出您系统中的一些问题,因此建议您激活它。通过电子邮件接收这些通知的另一个好处是客户关怀方面,当合法用户在尝试访问您的网站时感到沮丧时,您可以提供帮助。
检查安全检查
另一种机制是我们已经在第十二章“通过 Moodle 报告和分析获取洞察”中提到的,那就是您在网站管理 | 报告 | 安全检查中找到的安全报告:

图 13.4 – 安全检查
报告显示了几个潜在的关键安全问题,其状态(正常、信息、警告、关键或错误)以及摘要。当您点击问题名称时,您将被重定向到一个提供有关问题的更多信息,以及(如果可用)一个进一步操作链接到设置页面,您可以在那里纠正情况。
安全检查页面是识别一些潜在问题的良好起点。然而,它不能取代一些 Moodle 合作伙伴提供的全面安全审计、渗透测试或健康检查。
了解您的 Moodle 系统中正在发生的事情与确保关键组件的安全一样重要。让我们从任何 IT 设置中最薄弱的环节——用户开始。
确保用户安全
一个关键的安全方面在于确保只有特权用户可以访问您的系统,一旦他们经过身份验证,他们只能访问 Moodle 中他们的特权区域。
这里是关于魔法 Moodle 三角形中安全关键要素的快速回顾——用户、课程和角色:
-
确保正确的身份验证设置对于确保 Moodle 系统的安全至关重要,尤其是在自我注册或访客访问已被激活的情况下。我们在第五章“管理用户、群体和身份验证”中处理了内部、外部、基于提供者和系统身份验证方法。
-
一旦用户通过 Moodle 进行身份验证,您就必须确保他们只能注册他们应该有权限参加的课程,这由注册方法控制,如在第4 章“管理课程和注册”中详细讨论。
-
当用户注册课程或访问 Moodle 的其他任何区域时,确保他们获得正确的权限至关重要,这些权限通过角色和能力进行控制,这在第六章中详细讨论,管理权限、角色和能力。能力的六种风险类型——信任、配置、跨站脚本、个人、垃圾邮件和数据丢失——提供了对可能造成的损害的良好指示。
在本节中,我们将关注三个影响用户安全性的主题:
-
Moodle 密码,处理密码策略和恢复管理员密码
-
用户详细信息保护
-
防止垃圾邮件
让我们从 Moodle 密码开始,这是一个影响所有 Moodle 用户的主题。
配置 Moodle 密码
Moodle 提供了一个适用于手动账户的密码策略功能,可以通过访问 站点管理 | 常规 | 安全 | 站点安全策略 来配置,如下面的截图所示:

图 13.5 – 密码策略
Moodle 的密码策略支持以下配置选项类型:
-
复杂性:支持所有常见的密码要求,包括 密码长度、数字、小写字母、大写字母、非字母数字字符 和 连续 相同字符。
-
有效期:可以在 站点管理 | 插件 | 身份验证 | 手动账户 中为手动账户指定密码过期时间,在这里您可以配置 启用密码过期、密码持续时间 和 通知阈值。相关设置包括 密码轮换限制(用户可以重用密码的次数),验证密码重置请求的最大时间(当触发密码恢复时),以及 更改密码后注销(除当前浏览器会话外的所有浏览器会话)。
-
后果:在登录失败次数过多后,您可以锁定用户账户。账户锁定阈值允许您指定触发向用户发送重新激活电子邮件所需的登录失败次数,账户锁定观察窗口设置允许您指定进一步登录失败将包含在当前暂停期间的时间段,而账户锁定持续时间允许您指定账户自动解锁的时间。
请记住,密码策略仅适用于手动账户。如果您使用不同的身份验证方法,锁定阈值将在其他地方定义——例如,在 轻量级目录访问协议(LDAP)实例中。
重要提示
强烈建议您为 Moodle 管理员账户使用强密码(长、复杂且随机),即使密码策略已被停用。
Moodle 使用 bcrypt (Blowfish) 对密码进行加密哈希存储。为了进一步提高密码安全性,Moodle 支持对密码进行加盐处理,即在每个用户的密码哈希中添加一个单独的随机字符串。存储在 Moodle 数据库中的密码具有以下格式:
$<hash_id>$<cost>$<secure salt><hash>
<hash_id> 是使用的哈希算法的 ID(2y 表示 bcrypt),而 <cost> 是使用该算法的成本(两位数字)。<secure salt> 是一个随机生成的 22 位字符的盐;您可以在 docs.moodle.org/en/Password_salting 上找到有关加盐的更多详细信息。《hash>` 是实际密码的 31 位哈希值。
如果您丢失了管理员密码且无法恢复,您有两个选择:
-
在 SQL 数据库中的
mdl_user表中通过手动将旧哈希替换为新密码的MD5值来设置密码;在第一次登录后,它将被升级为强哈希值。例如,要将密码设置为'newpassword',您需要使用以下 SQL 语句:UPDATE mdl_user SET password = MD5('newpassword') WHERE username = 'admin';
如果您的数据库不支持 MD5 函数,您必须将密码设置为实际的 MD5 哈希标签。例如,对于 'newpassword',这将是一个 5e9d11a14ad1c8dd77e98ef9b53fd1ba 的标签。使用许多可用的在线生成器之一来查找标签。
-
reset_password.phpCLI 脚本为任何给定用户设置正确加盐的密码。将管理员密码更改为'newpassword'的语法如下:sudo -u www-data /usr/bin/php admin/cli/reset_password.php --username=admin --password=newpassword --ignore-password-policy
密码防止用户未经授权访问 Moodle。一旦用户已经确认了自己的身份,下一步就是保护他们的用户详细信息,这是以下小节的主题。
保护用户详细信息
网络上的身份盗窃是一个普遍问题,Moodle 也不例外。为了避免欺诈者收集有关已认证用户的信息的可能性,可以通过导航到网站管理 | 常规 | 安全 | 网站安全策略来查看以下设置:
-
保护用户名:如果用户忘记了他们的用户名或密码,Moodle 提供了一个忘记密码界面。默认情况下,显示的消息是如果您提供了正确的用户名或电子邮件地址,则应已向您发送电子邮件。然而,如果保护被关闭,则消息将变为应已向您在**@<域名>的地址发送电子邮件,这可能会允许猜测用户名。
-
强制用户登录:默认情况下,Moodle 的首页对所有人均可见,即使他们未登录到网站。如果您希望强制用户在看到首页之前登录,请更改此参数。因此,您的用户在进入您的网站时将只能看到登录界面。
-
强制用户登录以访问个人资料:当设置为是(默认设置)时,用户在访问其他用户的个人资料页面之前必须使用真实账户登录。
-
强制用户登录查看用户图片:如果禁用(默认),访客将能够看到其个人资料中的其他用户的图片。否则,将显示默认用户图片。一些组织完全禁用用户个人资料图片,这可以通过禁用用户个人资料图片选项实现。
-
对搜索引擎开放:Moodle 可以配置为允许搜索引擎爬取具有访客访问权限的课程,并将其内容添加到其搜索引擎数据库中。此功能默认关闭。
-
允许搜索引擎索引:不言自明的选项是除了登录和注册页面之外的所有地方、所有地方和任何地方。请注意,这些设置无法强制执行,因为每个网站都会添加一个标签头,要求搜索引擎尊重它。
-
个人资料可见角色:任何选定的角色都将显示在用户个人资料和参与页面上。
在站点安全设置屏幕下方还有两个相关的参数。您可以激活电子邮件更改确认。如果设置为是,用户将收到一封电子邮件以确认他们在个人资料中更改电子邮件地址是真实的。Moodle 提供了一种通过 cookie 记住用户名的方法,当打开登录表单时,这些 cookie 将被输入。虽然这对最终用户来说很方便,但它可能存在潜在的安全风险。为了防止此功能被支持,请通过转到站点管理 | 常规 | 安全 | 站点安全策略来配置记住用户名参数。由于用户名存储在永久 cookie 中,这可能会侵犯用户隐私(参见第十四章,遵守数据保护法规))。
默认情况下,Moodle 会在用户从新设备登录时触发通知。为了避免用户禁用此安全措施,您可能希望将新登录通知状态更改为锁定,在站点管理 | 常规 | 消息 | 通知设置中。
与用户详细信息保护相关的是防止个人资料垃圾邮件,这将在用户安全部分最后一个主题中介绍。
防止垃圾邮件
如果 Moodle 配置不正确,它将允许垃圾邮件发送者将内容插入通过自助注册创建的账户的用户个人资料中。
重要注意事项
只有在必不可少的情况下才使用基于电子邮件的自助注册。
如果您必须使用自助注册,请确保采取以下措施:
-
在站点管理 | 插件 | 身份验证 | 管理身份验证中启用reCAPTCHA。在同一页面上配置允许的电子邮件域名和拒绝的电子邮件域名。请参阅第五章中的常见身份验证设置部分,管理用户、群体和身份验证。许多公开在线列表包含一次性电子邮件地址的域名,您可能希望将其用于拒绝列表。
-
在通用 | 安全 | 网站安全策略中保持电子邮件更改确认启用。
-
按照本章后续部分所述配置 IP 阻止器。
为了防止个人资料垃圾邮件,请确保在通用 | 安全 | 网站安全策略中的以下设置设置正确(默认情况下是正确的):
-
保持强制用户登录查看个人资料参数启用(参考用户详细信息保护部分)。这样,您可以防止匿名访客和搜索引擎查看用户个人资料。
-
您可以通过仅对已注册用户启用个人资料设置进一步限制更改个人资料的访问权限,仅限于通过课程注册的用户。
此外,请注意,合法用户可能是垃圾邮件的来源。确保没有任何用户在他们的角色中拥有任何不必要的权限,这可能导致这种情况(参考第六章,管理权限、角色和功能中的垃圾邮件风险)。
如果您的网站遭受了垃圾邮件攻击,请转到网站管理 | 报告 | 垃圾邮件清理器。您可以选择让 Moodle 自动检测常见的垃圾邮件模式(该列表值得一读!)或搜索您自己的关键词:

图 13.6 – 垃圾邮件清理器
任何描述字段包含所列关键词的用户个人资料都会显示出来。然后您可以选择删除用户账户。有关 Moodle 中垃圾邮件预防的更多信息,请参阅docs.moodle.org/en/Reducing_spam_in_Moodle。
这就结束了关于用户安全性的章节,其中我们涵盖了 Moodle 密码配置、用户详细信息保护和垃圾邮件预防。接下来是内容安全。
确保内容安全
学习者和教师创建的内容可能包含恶意代码,一旦创建,就需要防止未经授权的访问。本节将确保内容安全(即在 Moodle 中创建的内容)、内容可见性和防病毒扫描器。
限制 Moodle 内创建的内容
用户可以通过使用 Atto 编辑器或上传文件来创建 Moodle 内容。在网站管理 | 通用 | 安全 | 网站安全策略中,有两个设置可以部分防止这些内容的滥用:

图 13.7 – 内容安全设置
这两个参数如下:
-
HTML 允许嵌入使用显式
<EMBED>和<OBJECT>标签的代码。潜在地,恶意代码可以放入嵌入的脚本中,这就是为什么默认情况下禁用了对其的支持。要激活它,请启用允许 EMBED 和 OBJECT 标签参数。 -
Atto 编辑器会自动移除任何不需要的 HTML 元素和属性。您可以绕过此清洁机制为个别用户设置。首先,您必须为每个您信任提交 JavaScript 和其他潜在恶意代码的用户设置
moodle/site:trustcontent能力。这些用户创建或上传的文本将被标记为可信,并在显示前不会被清理。
如果您希望在论坛等活动中的学习者输入的淫秽或其他不受欢迎的词语被审查,Moodle 在filter_censor.php中开发了badwords语言字符串(请注意,此列表远非 G 级)。此外,请记住,过滤器会捕获单词中的单词,并标记有效术语,如 cocktail、sexton、sparse 和 altitude。
好的,在你完全发挥想象力之前,让我们先设置内容可见性。
设置内容可见性
博客、标签和评论是 Moodle 社交网络活动。博客条目、标签和评论被用于搜索、分享和执行其他协作活动以匹配兴趣。潜在问题是内容对那些不应能够分享或查看条目的用户可见。Moodle 通过提供几个设置来解决这个问题,我们已经在第九章的配置协作工具部分中处理过,配置教育功能。以下是需要开启和关闭相应功能性的区域列表:
-
网站管理 | 外观 | 博客 | 博客可见性
-
网站管理 | 高级功能 | 启用 标签功能
-
网站管理 | 外观 | 博客 | 启用评论
如果您停用任何机制,系统上已存在或被隐藏的标签、评论和博客条目将在功能再次开启时重新出现。换句话说,关闭和重新开启功能时不会丢失数据。
您也可能考虑在您的系统上创建一个专用角色 – 例如,一个利用moodle/blog:create能力的博客作者角色。这将限制博客只对特定用户开放 – 那些被分配了新角色的用户。您可以在 Moodle Docs 中找到有关博客作者角色的更多详细信息,docs.moodle.org/en/Blogger_role。
内容安全性的最后一个组成部分是病毒扫描器的配置,将在以下子节中处理。
配置防病毒扫描器
Moodle 支持扫描上传文件中的病毒,这可以在网站管理 | 插件 | 防病毒插件 | 管理 防病毒插件中进行配置:

图 13.8 – 管理防病毒插件
有一些通用的防病毒设置适用于所有防病毒插件。Moodle(以及大多数其他)防病毒扫描机制背后的三步流程如下:
-
检测:文件将被扫描以查找潜在威胁,防病毒插件将确定检测方法。
-
$CFG->dataroot/antivirus_quarantine隔离文件夹用于后续检查。 -
删除:在禁用隔离时,检测到的文件将在检测后立即删除,在检查隔离文件夹后,或者当超过最大隔离时间时。
ClamAV是一个标准扫描器;更多防病毒插件可在 Moodle 插件目录中找到,地址为moodle.org/plugins/?q=type:antivirus。ClamAV 是一个开源防病毒引擎。有关更多详细信息、不同操作系统的下载以及如何保持病毒定义数据库更新的信息,请参阅www.clamav.net。您必须在配置扫描器通过设置链接之前在您的系统上安装 ClamAV。
ClamAV 有两种运行方法:
-
通过命令行:这是默认方法,您需要指定 ClamAV 已安装的路径。
-
通过系统套接字:在 Unix 系统中,可以使用 Unix 域套接字或 TCP 套接字来获得更好的性能。您需要联系系统管理员以获取这些参数的配置细节。
ClamAV 有两个限制。首先,ClamAV 不支持 Windows 服务器,您需要安装一个基于 Windows 的病毒扫描器来提供此功能并单独监控任何隔离文件。其次,ClamAV 将影响您的系统性能,如果文件上传功能被大量使用,这将成为一个问题。如果这种情况发生,您可能需要为您的服务器(s)分配 10-20%更多的 RAM。
这部分内容安全结束,我们涵盖了在 Moodle 中创建的内容、内容可见性和防病毒扫描器。最后一部分是确保系统安全。
确保系统安全
在本 Moodle 安全章节的最后部分,我们处理影响系统安全性的配置设置,包括对 dataroot 的访问、cron 执行、安全 HTTP 和 IP 阻止器。
配置对 dataroot 的访问
dataroot目录直接可通过互联网访问。Moodle 需要在服务器上额外空间来存储上传的文件,例如课程文档和用户图片。该目录称为dataroot,并且不得通过网页访问。如果此目录直接可访问,未经授权的用户可以访问内容。
重要提示
$CFG->dataroot不得通过网页访问!
为了防止dataroot目录可访问,将其移动到网站目录之外(确保不要损坏权限),并相应地修改config.php文件,通过更改$CFG->dataroot条目。
在外部托管环境中,通常无法在网页目录外找到目录。如果是这种情况,在数据目录中创建一个名为 .htaccess 的文件,并添加一行包含 denyfromall 的内容。
第二个系统安全措施是保护 cron 进程的执行,这将在下文中进行介绍。
保护 cron 执行
我们已经在第一章,“安装 Moodle”中描述了cron进程,并在第十五章,“优化 Moodle 性能”中会对此进行更详细的介绍。cron 是一个定期运行的脚本,用于执行某些操作,例如发送通知、处理统计数据和清理临时文件。在操作系统级别运行的脚本可能包含恶意代码。
可以通过在网页浏览器中输入以下 URL 来通过网页浏览器运行一个脚本:<yourMoodlesite>/admin/cron.php。在站点管理 | 常规 | 安全 | 站点策略中可以设置两个互斥的设置来防止这种情况:

图 13.9 – 配置 cron 执行
如果您只允许从命令行执行 cron 进程,则通过网页浏览器运行脚本将禁用,并显示一条消息,说明抱歉,管理员已禁用此页面的互联网访问。如果设置正确,cron 进程仍然可以自动执行。
如果 <yourMoodlesite>/admin/cron.php?password=yourpassword。如果没有提供密码或密码不正确,将显示一个错误消息,与之前我们看到的是相同的。
接下来是 HTTP 安全性的配置。
配置 HTTP 安全性
Moodle 提供了完整的 HTTPS 支持,它通过 SSL(一个更安全但稍微慢一点的套接字层)运行 HTTP 请求。鉴于黑客技术的快速发展和 SSL 证书的微乎其微的成本,每个包含用户数据的公开网页都应该通过 HTTPS 运行。
重要提示
跟着我重复:每个公开的 Moodle 网站都应该通过 HTTPS 运行,没有任何例外。
为了确保从用户的浏览器传输到托管 Moodle 的服务器的所有数据都经过加密,必须在您的 web 服务器上启用 HTTPS。您还必须购买或生成一个 SSL 证书。每个 web 服务器都有不同的方法来启用 HTTPS,因此您应该查阅您的服务器文档。Apache 设置 SSL/TSL 的良好起点可以在 httpd.apache.org/docs/current/ssl/ssl_howto.xhtml 找到。
一旦 Web 服务器被配置为使用 HTTPS,Moodle 安装脚本将使用这些详细信息(参见 第一章,安装 Moodle)。如果您需要从 HTTP 转换到 HTTPS,我们建议您遵循 Moodle Docs 上的说明 (docs.moodle.org/en/Transitioning_to_HTTPS) 并使用 Moodle 在 站点管理 | 常规 | 安全 | HTTP 安全 下方提供的 HTTPS 转换工具:

图 13.10 – HTTPS 转换工具
工具执行两个任务。首先,它扫描任何课程内容,并在发现任何潜在问题或冲突时通知您。其次,一旦您勾选了确认框,就会执行不可逆的转换;所有 HTTP 链接都更改为 HTTPS。
工具也可以使用以下语法在 CLI 模式下执行:
sudo -u www-data /usr/bin/php admin/tool/httpsreplace/cli/url_replace.php --replace --confirm
关于该工具的更多详细信息,请参阅 docs.moodle.org/en/HTTPS_conversion_tool。
重要提示
如果您在没有安装相关系统组件的情况下启用 HTTPS – 即,添加 PHP 扩展以及正确的 Web 服务器配置 – 您将无法访问自己的系统!
在 站点管理 | 常规 | 安全 | HTTP 安全 中有许多相关的设置,您应该仔细检查:
-
仅支持安全 cookies:Web 服务器可以被配置为只接受 HTTPS URL。如果您的系统是这样的,您应该启用此参数。
-
仅支持 http cookies:Moodle 支持指导网络浏览器仅在实际请求中发送 cookies,这可以防止一些 XSS 攻击。
-
允许框架嵌入:参见 第九章 中 Moodle 作为 LTI 工具 部分的提示,配置 教育功能。
-
localhost变体。 -
80和443。
HTTP 安全定义了您的 Moodle 实例通过什么协议访问以及相关的设置。最后一个系统安全主题涉及允许和阻止访问您网站的 IP 地址。
允许和阻止 IP 地址
用户将从固定和移动设备访问您的系统。他们共同的特点是都将通过 IP 地址访问您的网站。您可以通过在 站点管理 | 常规 | 安全 | IP 阻止器 中指定允许列表和拒绝列表来限制这种访问:

图 13.11 – IP 阻止器
允许列表(允许 IP 列表)可以包含多种格式的 IP 地址(完整的 IP 地址、部分地址、IP 地址范围和 CDIR 表示法)。同样适用于拒绝列表(阻止 IP 列表)。默认情况下,拒绝列表优先于允许列表。如果您希望反转这一点,请选择 允许列表将首先 处理。
重要提示
注意,在允许列表中的任何条目,其效果是只允许那些 IP 地址,并阻止所有其他地址。在使用此设置时要小心,因为有可能将自己锁在 Moodle 外面。
例如,您可能想将 192.168.*.* 添加到您的允许列表中,并拒绝一个特定的 IP 地址——比如,尝试多次猜测您的管理员密码的 192.168.123.45。
这部分关于系统安全的内容到此结束,我们讨论了 dataroot 的访问、cron 执行、HTTPS 和 IP 阻止器。
摘要
本章教您如何保护您的 Moodle 系统免受潜在的滥用,并定期检查其安全性。为了总结,以下是一个简短的检查清单,列出了以下最佳实践。虽然这份清单远非完整,但它为您作为 Moodle 管理员应负责的元素提供了指示:

图 13.12 – Moodle 安全最佳实践
强调一点很重要,Moodle 的安全性在整个方程中只是一个变量。确保所有其他底层软件、基础设施和硬件组件都正确设置。
如果出现安全威胁,强调制定应急计划的重要性。这包括识别问题的策略、解决情况的措施以及需要通知的用户名单等。
大多数 Moodle 系统运行在 LAMP 平台上,如果配置正确,已被证明非常安全。Moodle 的开发者非常清楚,在处理个人用户数据(如成绩、作业和能力)时,安全性至关重要。因此,这个主题被赋予了最高的优先级。然而,并不能保证您的系统 100%不受滥用。在当今的网络安全世界中,新的黑客技术将不断出现,用户将继续对他们的凭证疏忽大意(你们都见过键盘下的便利贴)。因此,请确保整个系统的安全补丁和更新始终是最新的,并继续教育您的用户关于这些危险。此外,考虑定期进行安全审计或健康检查,这是某些 Moodle 合作伙伴提供的。
现在您的系统已经安全,让我们确保其隐私设置符合数据保护法规。
第十四章:遵守数据保护规定
数据隐私关乎个人数据的保护。根据其设置,Moodle 可能存储大量敏感数据,如 ID、地址、成绩和考试提交。随着通用数据保护条例(GDPR)的引入,一个具有法律约束力的框架已经建立,并且 Moodle 完全支持它。
本章将教会您如何配置 Moodle 站点以符合数据保护规定。
重要提示
免责声明:本章中提供的建议仅用于信息目的,不应被视为法律或专业建议。
在了解 GDPR 的一些法律背景之后,您将学习以下主题:
-
指定隐私官:您将学习如何设置隐私官角色并激活隐私官功能。
-
管理策略:在创建和更新版本化策略之前,我们将查看 Moodle 策略处理器的配置。我们还将进一步监控用户协议并处理 Moodle 系统中的未成年人。
-
配置数据登记册:在将它们分配到上下文之前,我们将设置数据登记册类别和目的。
-
管理数据请求:最后,我们将管理数据访问请求以处理数据更正(消息)、数据访问(导出)和数据擦除(删除)。
我们将以 Moodle 隐私检查表结束本章。在我们覆盖上述主题之前,让我们先熟悉一些法律术语。
理解 Moodle 隐私
2018 年 5 月 25 日:GDPR 适用于所有欧盟居民。
提前一周:Moodle 3.5 版本发布,支持一些但不是所有 GDPR 功能。
这是 Moodle 首次被迫实施一系列功能以符合立法规定(gdpr-info.eu)。所有必需的功能在 3.6 版本中完成实施,并且该功能被回滚到三个版本——这是 Moodle 的另一个首次。
虽然 GDPR 仅适用于欧盟居民或位于欧盟的网站,但有两个原因使得这些规定可能对所有 Moodle 系统都相关:
-
如果您的系统(学生、员工、供应商等)中有一个或多个用户来自欧盟,您有义务遵守该规定。或者,用更正式的法律术语来说:任何存储或处理来自欧盟成员国可识别个人信息的个人或组织(无论信息处理或存储是否发生在欧盟内)。
-
欧盟的数据保护法律长期以来一直被视为黄金标准,并且已被欧盟以外的许多国家完全或部分采用。
在我们配置您的 Moodle 系统中的隐私和政策设置之前,我需要向您介绍一些 GDPR 基础知识。GDPR 中使用了某些术语,您在配置 Moodle 隐私时可能会遇到,如下面的屏幕截图所示:

图 14.1 – GDPR 术语
总结图 14.1,数据主体的个人数据由数据处理者代表数据控制器进行处理。在 Moodle 的说法中,与用户相关的数据存储在您的数据中心或第三方托管公司,按照您组织的指示。
重要提示
GDPR 的主要目标是保护个人数据。
Moodle 存储个人和非个人数据,GDPR 关注的是个人数据,这是我们需要保护的数据。数据主体(Moodle 用户)对其存储和处理的具有深远权利的数据,已在以下屏幕截图和相应的 Moodle 功能中总结:

图 14.2 – GDPR 数据主体权利
从 Moodle 用户——抱歉,应该是数据主体的角度来看,可以通过用户资料中的隐私和政策部分获得这些权利,可能看起来像这样:

图 14.3 – GDPR 数据主体权利(Moodle 用户资料)
那么,为什么 Moodle 不能直接在其核心实现 GDPR 并标注该产品为 GDPR 合规?遗憾的是,这种硬编码的方法是不可能的,因为必须考虑和配置不同的因素。例如,用户的年龄(儿童比成人受到更好的保护),存储的数据类型(例如,年龄或性别可能在某个 Moodle 系统中是可接受的,但在另一个系统中则不是),以及本地或内部监管约束,这些约束优先于 GDPR——特别是数据的保留期限。
重要提示
并没有适合所有情况的 Moodle GDPR 设置。需要正确配置和实施流程和程序。
可能被视为 GDPR 不足之处的是其优势,因为它适应了不同背景下的各种设置。对于 Moodle 管理员来说,这有两个主要影响:
-
您需要与法律专家联系。你知道,那些穿着灰色西装的人,他们按分钟收费。
-
您需要根据灰色西装告诉您的内容配置 Moodle 的隐私设置、政策和流程。
GDPR 还规定了七项原则,用于合法处理个人数据。此外,在审计、违规或投诉的情况下,隐私实施必须补充必要的文件。这两项内容超出了本书的范围,本章不会涉及,但灰色西装将能够协助您在这些事项上。
足够的法律术语,让我们开始吧。Moodle 为这一主题专门设立了一个隐私和政策部分,我们将在本章的剩余部分进行介绍。首先,我们需要指定一个隐私官,这将在以下部分中处理。
指定隐私官
一旦 Moodle 的隐私功能设置完成,就需要有人处理来自用户的日常请求以及任何其他与隐私相关的问题。Moodle 将此功能命名为隐私官,我们在这里也将坚持使用这个术语。
Moodle 管理员通常在较小的实例中承担这一角色,在较大的系统中这通常是一个单独的功能。无论如何,我们建议设置一个专门的用户账户来处理任何与隐私相关的任务。
要在 Moodle 中建立隐私官,需要以下三个步骤:
-
创建一个新的隐私官角色。
-
在系统上下文中分配此角色给你的指定隐私官(们)。
-
激活 Moodle 的隐私官功能。
分配此角色的上下文类型必须设置为dataprivacy和policy:

图 14.4 – 隐私官角色定义
有关创建和分配角色的更多详细信息,请参阅第六章,管理权限、角色和功能。
在moodle/site:configview能力中必须选择新角色,这将授予分配的隐私官访问相关网站管理菜单项的权限,如下所示:

图 14.5 – 启用隐私官功能
一旦启用联系隐私官选项,用户将通过用户资料的隐私和政策部分访问该功能,如图图 14.3所示。建议在配置所有必需的隐私元素之前保持此功能未激活。我们将从作为政策实施的知情权开始。
管理政策
Moodle 实施了一个政策工具,允许你定义多个政策,支持政策版本,跟踪用户协议,并能处理未成年人的同意。
为了让您对 Moodle 政策的结构有一个初步的了解,请查看以下图表:

图 14.6 – Moodle 政策
一个网站可以有多个政策;例如,你可能有三个政策:一个处理用户数据隐私,一个处理 cookies,一个涵盖第三方插件和外部数据。
每个政策可以有多个版本。每次政策发生变化时,都会创建一个新的版本,可能需要用户同意。对于每个未标记为微小更改(错别字或外观调整)的版本,Moodle 都会跟踪用户协议。
在本节中,您将学习如何配置和监控以下策略功能:
-
选择站点策略处理器
-
创建和更新策略,包括策略版本
-
监控用户协议
-
处理未成年人(在 Moodle 中,而非生活中)
在我们创建第一个策略之前,我们首先需要选择一个站点策略处理器。
选择站点策略处理器
Moodle 站点策略处理器决定了数据策略和用户同意如何管理。Moodle 随附以下两个策略处理器:
-
默认(核心):您可以指定一个站点策略 URL参数,该参数必须由所有注册用户同意,以及一个访客站点策略 URL参数
-
策略(tool_policy):您可以管理多个站点、隐私和其他策略,包括策略版本,并监控不同类型的用户同意
core策略处理器是一种通用的方法,不支持高级策略功能。我们建议不要使用这个“旧”工具。本章的其余部分将重点介绍tool_policy,您必须通过在站点管理 | 用户 | 隐私和政策 | 策略设置中选择站点策略处理器类型来启用它,如下面的截图所示:

图 14.7 – 站点策略处理器
您可以在站点管理 | 常规 | 移动应用 | 移动设置中的应用策略 URL参数中为 Moodle 应用指定一个单独的隐私策略。如果留空,则将使用全局的站点策略 URL参数。我们已在第十一章中处理了应用策略,启用 移动学习。
站点策略处理器已作为插件实现。技术上,未来可能开发并可在 Moodle 中提供其他法规的数据保护框架。
现在我们已经选择了正确的策略处理器,让我们创建我们的第一个策略。
创建策略
策略在站点管理 | 用户 | 隐私和政策 | 管理策略中进行管理。在我们的系统中,我们已经创建了三个策略——一个是活跃的,两个是草稿状态,如下所示:

图 14.8 – 策略和协议
每个首次登录您的 Moodle 站点的用户都必须同意任何有效的隐私通知;已有两位用户这样做,其他人仍在等待。
当您选择新建策略按钮时,您将看到以下屏幕:

图 14.9 – 创建新策略
除了自解释的名称字段外,以下字段也必须提供:
-
类型:可用的选项有站点策略、隐私策略、第三方策略和其他策略。策略类型不会影响策略行为,仅用于显示目的。
-
用户同意:该政策适用于所有用户、认证用户还是仅访客?访客政策无需获得同意;相反,如果用户以访客身份浏览网站或登录,页面底部将显示一个模态通知窗口,其中包含指向为访客或所有用户定义的所有政策的链接:

图 14.10 – 访客政策
-
版本:您应该制定自己的版本约定。大多数网站使用日期、版本号或两者的组合。如果编辑后的政策版本没有更改,Moodle 会自动将其附加一个版本号。
-
摘要:对政策的简短描述,将在确认屏幕上显示。
-
完整政策:这是政策的完整(法律)文本。
-
在显示其他政策之前显示政策:当存在多个政策时,这是否应该是第一个显示的政策?另一种更改政策顺序的方法是在政策和协议屏幕上使用上下箭头。
-
协议可选:可选协议会显示,但用户可以无后果地拒绝。
-
政策状态:一旦将状态从草稿切换到激活,用户(除管理员外)必须在登录时同意该政策。
在创建过多的试用政策时要小心:一旦将政策设置为激活状态,就再也不能删除了!您唯一能做的就是将其状态改回草稿,但除非您在数据库级别手动删除,否则它将无限期地保留在您的系统中。
如果您修改政策,Moodle 将创建一个新版本,我们将在以下小节中介绍。
更新政策(版本控制)
由于数据保护是法律要求,必须保留整个政策历史记录。这种可审计性适用于政策(首先涵盖)和用户协议(接下来涵盖)。
重要提示
当您编辑政策时,Moodle 将创建一个新版本。
在编辑用户政策时,您可能会更改其名称和/或内容(摘要或完整政策)。无论如何,有两个字段与政策处理相关:
-
版本:政策历史记录中的每个版本号都必须是唯一的。如果您不更改它,Moodle 会自动将其修改为版本号。
-
政策状态:如果政策状态为激活,您可以选择编辑的版本是微小更改还是重大更改。微小更改不需要用户同意;重大更改需要。
您可以通过管理政策页面上的操作列中的查看先前版本选项查看政策的版本历史。用户还可以通过其个人资料中的隐私和政策块中的政策和协议链接查看当前和过时的版本。以下是一个示例,我们的 cookies 政策有三个版本:

图 14.11 – 策略版本
一旦您创建并更新了您的策略,您就可以管理它们的用户协议,如下节所述。
监控用户协议
用户协议详细说明了所有相关方的权利和义务。
重要注意事项
用户协议是在数据主体(Moodle 用户)和网站的所有者、运营商或提供者(数据控制者或数据处理者)之间的一项具有法律约束力的合同。
由于用户协议具有合同性质,您,作为隐私官,或任何被授予权限(tool/policy:viewacceptances)的人必须跟踪用户协议。您可以在站点管理 | 用户 | 隐私和政策 | 用户协议中查看每个协议的状态:

图 14.12 – 用户协议
您可以通过点击Agreements列中的链接,在Manage policies页面上查看特定策略的用户协议。您可以通过Policy(及其版本)、Permission、Status和Role来过滤表格。对于每个用户和每个策略,以下状态之一会被显示:
-
接受:用户已同意该策略。
-
待定:用户尚未(或尚未)同意该策略。
-
拒绝:用户已拒绝该策略。此状态仅存在于可选协议中。
任何具有tool/policy:acceptbehalf能力的用户都可以代表用户同意。此操作适用于已在线获得书面同意或需要代表未成年人同意的场景,我们将在下一部分处理。
处理未成年人
GDPR 特别重视保护儿童的个人信息。未成年人(年龄低于数字同意年龄的用户)可能无法同意隐私政策。相反,某人(通常是父母或监护人)必须代表他们同意。
为了处理用户同意策略的情况,您需要使用tool/policy:accept能力。根据您网站上未成年人的百分比,您可以选择以下两种不同的方法(部分借鉴自docs.moodle.org/en/Policies#Minors)。
以未成年人为主要用户的网站
此方法阻止所有用户接受策略,除非您明确授予他们权限——例如,教师或员工。以下是您需要采取的步骤:
-
将Authenticated user角色的
tool/policy:accept能力设置为禁止。 -
创建一个将
tool/policy:accept能力设置为允许的新角色,并将角色分配的上下文类型设置为系统。 -
将新角色分配给所有允许同意策略的用户。
有关修改和创建角色的说明,请参阅第六章,管理权限、角色和功能。
以未成年人为少数用户的网站
这种方法与之前的方法相反,防止任何人接受政策,除非个别选定的用户(未成年人)。请按照以下步骤操作:
-
创建一个新角色,将
tool/policy:accept能力设置为禁止,并将角色可能分配的上下文类型设置为系统。 -
将新角色分配给所有不允许同意政策的用户。
为了避免处理基于纸张的政策和签名以及随后在 Moodle 上代表他们接受这些政策的开销,请考虑我们在第六章中介绍的家长角色,管理权限、角色和功能。
我们所讨论的场景涉及已经在你网站上认证的未成年人。当你预期未成年人注册新账户时,你还需要验证他们的数字同意年龄,我们将在下一个小节中介绍。
验证数字同意年龄
如果你已启用自助注册并预计未成年人将注册到你的网站,你应该在网站管理 | 用户 | 隐私和政策 | 隐私设置中启用数字同意年龄验证设置,如图下截图所示:

图 14.13 – 数字同意年龄
你可以进一步指定国家代码、年龄。默认年龄由*代替国家代码表示。两字母国家代码按照 ISO 格式指定。
一旦启用并配置,用户在允许继续之前必须提供他们的年龄并选择居住国家。
这部分关于隐私政策的讨论到此结束。本章的第二部分讨论数据登记册,这是管理数据请求所需的。
配置数据登记册
根据 GDPR,用户可以请求的信息类型之一是所有数据处理及其背后的推理列表,包括其保留期限。数据登记册包含这些信息,以类别和目的表示。
重要提示
类别用于在 Moodle 中组织数据。
目的描述了数据的使用(法律原因和保留期限)。
你可以在网站管理 | 用户 | 隐私和政策 | 数据登记册中找到数据登记册,它显示了以下说明:
数据登记册使所有网站内容(从用户和课程到活动和块)的类别(数据类型)和目的(处理数据的原因)得以设置。对于每个目的,可以设置保留期限。当保留期限到期时,数据将被标记并列入删除名单,等待 管理员确认 *。
这条注释完美地总结了数据登记册的目标。数据登记册的结构在以下图表中展示:

图 14.14 – 数据注册
系统中的每个上下文,从站点到用户和类别,一直到单个课程活动和块,都被分配了一个类别和一个目的。在我们能够管理数据请求之前,我们首先需要配置这些类别和目的,我们将在以下两个小节中介绍。
管理数据注册类别
从站点管理 | 用户 | 隐私和政策 | 数据注册中的编辑菜单中选择类别项以访问数据注册类别。使用加号按钮添加新条目;我们已创建了三个数据注册类别,如下所示:

图 14.15 – 数据注册类别
在您可以将添加的类别分配给上下文之前,我们需要创建数据注册目的。
管理数据注册目的
从站点管理 | 用户 | 隐私和政策 | 数据注册中的编辑菜单中选择目的项以访问数据注册类别。使用加号按钮添加新条目;我们已创建了一些数据注册目的,如下所示:

图 14.16 – 数据注册目的
每个目的都有以下属性:
-
名称和描述:这些应该是自解释的。
-
合法基础:选择至少一个可用的选项作为合法基础。合法性是 GDPR 的七个原则之一。
-
敏感个人数据处理原因:选择至少一个可用的理由,以豁免禁止处理个人数据。目的限制是 GDPR 的另一个原则。
-
保留期:课程内容的保留期从活动所在的课程结束日期开始计算。对于用户来说,是从最后一次登录时间开始计算,对于不再注册或已被删除的任何用户。
-
受保护:指定此数据是否受用户删除的保护。如果设置,则此数据的保留具有比用户请求被遗忘更高的法律优先级。这些数据只有在保留期结束后才会被删除。
-
角色覆盖:此选项仅在编辑目的时可用。默认保留策略可以针对特定用户角色进行覆盖,允许您指定更长的或更短的保留策略。用户账户只有在所有角色都已过期时才会过期。
选项包括它们的 GDPR 文章,用于合法基础和敏感个人数据处理原因,如下截图所示:

图 14.17 – 数据注册目的
现在您已创建了数据注册类别和目的,您可以将它们分配给上下文,如下所示的小节。
将类别和目的分配给上下文
在数据注册表中,对于您 Moodle 站点中的每个上下文,都必须设置一个类别和目的,以及因此该上下文的数据保留期。您应该在站点级别设置类别和目的;一旦设置,所有较低级别的上下文都将继承该级别的设置。
然后,您可以针对不同的上下文级别设置不同的类别和目的,例如,为特定课程设置较长的或较短的数据保留期,从而覆盖继承的值。
下面的截图显示了数据注册表界面:

图 14.18 – 将类别和目的分配给上下文
对于每个上下文,以下值将被存储:
-
主题范围:在此上下文中可能分配的角色
-
类别:除了指定的类别外,您还有未设置(使用默认值)和继承(使用父上下文的类别)选项
-
目的:除了指定的目的外,您还有未设置(使用默认值)和继承(使用父上下文的目的)选项
-
保留期:该期限将按所选目的的指定方式显示
要指定默认值,请选择设置默认值按钮,在那里您可以编辑课程类别、课程、单个活动和块的默认值。上下文的层次结构是从上到下——站点、类别、课程、活动和块。我们在第六章中详细介绍了上下文,管理权限、角色和功能。
所有 Moodle 核心插件完全符合 Moodle 隐私 API(docs.moodle.org/dev/Privacy_API)。强烈建议您只安装也支持隐私 API 的第三方插件,您可以在站点管理 | 用户 | 隐私和政策 | 插件隐私注册表中的插件隐私合规注册表中验证这些插件。所有已安装的 Moodle 插件都列在存储的个人数据信息和它们是否遵守隐私 API 旁边。任何标记为存储个人数据的插件将无法通过 Moodle 的隐私系统导出或删除。在 Moodle 插件数据库中,隐私友好型插件被标记为“隐私友好型”,在moodle.org/plugins上您可以查看此类插件的示例:

图 14.19 – 隐私友好型插件
用户可以通过其个人资料中的数据保留摘要链接查看数据注册表信息(核心和第三方)。您可以通过在站点管理 | 用户 | 隐私和政策 | 隐私设置中取消选中显示数据保留摘要选项来删除此链接。
一旦完成数据注册,它将被用于数据删除过程,这些过程是下一节中涵盖的数据请求的一部分。
管理数据请求
用户可以通过他们的个人资料菜单选择不同的选项来请求信息或对其数据进行修改:
-
联系隐私官(消息)
-
请求他们的个人数据副本(导出)
-
请求删除他们的个人数据(删除)
以下图表说明了数据请求的工作流程,也称为主体访问请求:

图 14.20 – 数据请求工作流程
要管理所有数据请求,请转到网站管理 | 用户 | 隐私和政策 | 数据请求,您将看到如下屏幕:

图 14.21 – 数据请求
消息工作流程很简单:用户通过其用户资料的联系方式表单联系隐私官。隐私官将收到通知,然后可以采取行动并标记请求为完成。此选项涵盖了数据主体的更正权——即请求更正他们认为不准确的数据的权利。
其他两个工作流程——导出和删除——需要更多关注,将在以下两个小节中处理。
数据导出
数据主体有权访问他们的个人数据,数据导出功能有助于实现这一 GDPR 权利。
用户请求导出所有数据最初标记为cron运行(处理)。完成后,用户将收到通知,数据导出状态已更改为下载就绪。当指定的时间过去后,状态将变为过期,下载将被禁用。
数据导出格式为JSON,符合 GDPR 的可携带性权利,即数据必须以结构化、常用和机器可读的格式存在。下载包含包含字段描述符的压缩文件包。
有三个参数会影响数据导出工作流程,您可以在网站管理 | 用户 | 隐私和政策 | 隐私设置中进行配置:
-
自动数据导出请求批准:跳过批准步骤,自动批准导出。
-
数据请求过期:批准的数据请求在过期前可下载的时间。如果设置为零,则没有时间限制。
-
导出时包含日志:是否在导出中包含与用户相关的日志条目。
数据导出涵盖了 GDPR 中的访问权。删除权由数据删除涵盖,这是下一小节的主题。
数据删除
数据主体有权要求删除其数据,前提是这不会与反对此权利的合法理由相冲突。这句话的后半部分有点棘手,因为“合法理由”可能不仅在不同组织之间不同,而且在 Moodle 实例、用户类型(角色)、课程以及甚至个别活动中也可能不同。我们在数据注册表中指定了这些信息,这些信息在数据删除处理过程中会被考虑。
数据删除过程的初始阶段与数据导出工作流程相同:请求被放入一个等待区,在那里它们等待批准;除非用户已取消请求,否则它们可以被隐私官批准或拒绝。
数据擦除在下一个 cron 运行期间进行处理,考虑到数据注册表中指定的数据保留期。根据您指定的数据保留值粒度,这可能会立即触发删除某些数据,而其他数据可能不会在数年内被删除。以下基本时间线说明了在删除处理过程中何时删除数据以及何时保留到到期期结束:

图 14.22 – 保留期 – 受保护与未受保护
您可以通过导航到 站点管理 | 用户 | 隐私和政策 | 数据删除 并选择一个上下文(课程、用户、活动和资源以及块)来查看已过保留期的数据。在我的系统中,个人数据的保留期为 7 年。我不想等那么久,所以我创建了一个为期一天的测试保留期来演示其行为,如下所示:

图 14.23 – 数据删除
每个条目都显示了要删除的数据的隐私相关信息——这里是一个用户。您需要确认不可逆的数据删除,该删除将在下一个 cron 运行期间执行。
有三个参数会影响数据删除工作流程,您可以在 站点管理 | 用户 | 隐私和政策 | 隐私设置 中进行配置:
-
自动数据删除请求批准:跳过批准步骤,自动批准删除
-
创建自动数据删除请求:当手动删除用户时,将自动创建数据删除请求
-
将没有结束数据的课程视为活跃状态:此选项已在内联帮助中详细解释,并很好地说明了课程用户的保留期是如何计算的:

图 14.24 – 用户到期数据保留计算
这部分内容是关于管理数据请求的总结,其中我们介绍了 Moodle 的数据隐私工具来处理以下 GDPR 用户权利:
-
更正权(消息)
-
访问权(导出)
-
删除权(删除)
为了结束本章,我们总结了其内容,并在 Moodle 隐私清单中提供了其关键信息。
摘要
2018 年 5 月 25 日:GDPR 适用于所有欧盟居民。
一周前:Moodle 3.5 版本发布,支持一些但不是所有 GDPR 功能。
我们在 2018 年 5 月开始了 Moodle 隐私章节的讨论,那时发生了这两件事。现在你已经阅读了本章,并可能意识到了确保所有 IT 系统合规的复杂性,你能想象所有利益相关者配置 Moodle 系统时的忙碌一周吗?对于那些足够年长的人,处理 Y2K 错误与遵守 GDPR 相比只是小菜一碟。
本章介绍了 GDPR 的一些法律背景。然后,我们通过设置一个专用角色并激活隐私官功能来指定了一个隐私官。
接下来,你学习了所有你需要知道的管理策略。我们在创建和更新版本化策略之前配置了 Moodle 的策略处理器。然后,我们监控用户协议并处理 Moodle 系统中的未成年人。
然后,我们配置了你的数据登记册,在将它们分配到上下文之前设置了数据登记册类别和目的。
最后,我们管理数据请求,处理数据更正(消息)、数据访问(导出)和数据删除(删除)。
作为总结,这里是一个简短的 Moodle 隐私清单。虽然这个列举远非完整,但它为你作为一个 Moodle 管理员和/或 Moodle 隐私官应负责的元素提供了指示:

图 14.25 – Moodle 隐私清单
现在希望你的系统符合数据隐私规定,所有灰色西装的人都满意了,让我们确保 Moodle 发挥其全部潜力。在接下来的章节中,我们将优化 Moodle 以确保足够的可扩展性,从而提供良好的用户体验。
第十五章:优化 Moodle 性能
基于网络的系统性能是一个关键问题,管理员配置、监控和微调 LMS 以实现最大速度是关键责任。虽然 Moodle 有潜力扩展到数以万计的并发用户,但良好的性能管理是保证足够可扩展性的必要条件。
在概述了主题之后,我们将涵盖与 Moodle 性能和优化最相关的主题:
-
优化 Moodle 功能性能:我们将探讨 Moodle 函数和 Moodle 活动中的性能问题。优化它们的性能通常是在提高速度和可能减少功能之间进行权衡,这一点将在讨论中涉及。
-
Moodle 通用缓存 (MUC):我们将介绍强大的 MUC 的不同元素,即缓存类型、缓存存储和缓存定义。然后我们将向您介绍一些 MUC 性能测试和不同的缓存选项。
-
优化 Moodle 系统性能:我们将处理一系列与系统相关的性能设置,包括会话处理、cron 管理和计划任务、配置全局搜索以及设置系统路径。
我们将在本章的末尾简要介绍 Moodle 性能分析和监控部分。
理解 Moodle 性能
通用网络应用程序,尤其是 Moodle,具有非常明显的应用层,包括操作系统、Web 服务器、数据库服务器以及用编程语言开发的应用程序。每一层在优化方面都有其独特之处。我们将专门关注 应用层,这是本书的重点,如下图所示:

图 15.1 – Moodle 性能
以下方面没有详细讨论,有必要参考有关性能和优化问题的相应文档:
-
操作系统性能:操作系统的选择和配置将显著影响 Moodle 的性能。原则上,Linux 或任何其他 Unix 衍生系统比任何其他操作系统表现更好。PHP 应用程序,如 Moodle,在 Windows 环境中的运行速度比在 Linux 环境中慢得多。这方面的某些内容在 第一章,安装 Moodle 中有所涉及,当时我们讨论了 Moodle 的安装。
-
将
config.php中的$CFG->dbhost条目从localhost更改为数据库的 IP 地址。后者要复杂得多,需要强大的数据库管理技能。
关于哪种数据库最适合 Moodle 的讨论也有很多。虽然开源阵营在 MySQL、MariaDB 和 PostgreSQL 之间分裂,企业则在 MS SQL Server 和 Oracle 之间分裂。无论您选择哪种系统,一个设置良好并经过调优的数据库总是比使用默认设置的数据库性能更好——“最好的数据库系统是你所了解的系统”。
-
Web 服务器性能:每个 Web 服务器(Apache、互联网信息服务(IIS)、nginx 等)都提供了一系列优化设置,包括内存处理、缓存、进程管理和其他小调整。
-
PHP 性能:有几种方法可以强制 PHP 以显著更快的速度执行代码。做到这一点的关键是使用 PHP 加速器,结合良好的内存管理和缓存技术。Moodle 支持Zend OPcache,默认情况下是预编译的。Zend OPcache 通过代码缓存和优化加快 PHP 执行速度。它将预编译的脚本字节码存储在共享内存中。您可以通过访问站点管理 | 服务器 | 环境来检查 OPcache 是否正常工作,如下面的截图所示:

图 15.2 – Zend OPcache 检查
您的 php.ini 文件可能包含以下条目(有关详细信息,请参阅docs.moodle.org/en/OPcache):
[OPcache]
opcache.enable = 1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=8000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
在moodle.org/plugins/tool_opcache有一个方便的插件可用,它为 Moodle 添加了一个 PHP OPcache 管理 GUI,一个用于重置 PHP OPcache 的 CLI 工具,以及一个用于 PHP OPcache 的 Nagios 检查。
-
硬件性能:我们在第一章,安装 Moodle中提到,没有一种适合所有情况的理想硬件配置方法。对于单服务器系统,关键是 RAM:越多越好。就这么简单。一旦并发级别超过一定水平,在负载均衡环境中使用多个 Web 服务器是不可避免的。
-
网络性能:网络是大多数 IT 基础设施的骨干,因此可能成为性能瓶颈。您的拓扑、软件和硬件必须正确配置,以确保网络性能良好,没有典型的如数据包丢失等问题。
-
内容性能:由您的课程创建者或主页设计师创建和上传的内容将对您的系统性能产生影响。虽然您不能指定哪些学习资源被添加到 Moodle 中,但您可能希望推荐两种主要策略来减少内容对系统的影响:首先,课程和主页中的内容量应保持在一个可管理的范围内,避免著名的死亡滚动。其次,内容应进行优化,特别是办公文档(例如,PDF 文件而不是 Word 文件)、图像(分辨率和颜色深度)以及音频/视频(采样率和分辨率)。
虽然所有上述标准都适用,但某些元素可以即时更改。例如,在考试周,您可能考虑增加 Moodle 可用的内存,而在暑假期间,您可以减少服务器数量以进行维护。更复杂的设置允许您指定负载和使用阈值,这些阈值可以动态触发资源分配。
对于每个提到的区域,都有配置文件工具、监控系统、基准测试和压力测试可用,以帮助您判断哪些性能瓶颈存在,以及优化后是否已减少。
Moodle 文档中有一个专门针对性能和优化的区域。您可以在docs.moodle.org/en/Performance找到大部分相关信息和相关网站的链接。
您应该记住,Moodle 的性能不能独立看待。例如,提高安全性在性能降低方面是有代价的;在整个站点上运行 HTTPS 高度推荐,但它会减慢某些操作。这里展示的跷跷板显示了某些典型权衡:

图 15.3 – 与世界其他地区的性能比较
您将经常面临的一个权衡是性能与功能,某些功能会损害系统运行的快速性。Moodle 随附一个基本的性能报告(站点管理 | 报告 | 性能概述),显示了这些权衡的一些例子。
我们将通过查看一些可以优化但会影响一些或所有用户的一些 Moodle 功能来启动性能优化的列表。
优化 Moodle 功能性能
本节标题略有误导性,因为优化 Moodle 功能实际上意味着限制其功能。本节中的建议对性能有积极影响,但可能对用户功能有负面影响。虽然某些功能可能是可废弃的(例如,统计数据),但其他功能应该是不可协商的,如备份。
我们已经将 Moodle 功能在性能优化背景下分为 Moodle 函数和 Moodle 活动。
优化 Moodle 函数
在本小节中,我们收集了一些影响您 LMS 性能的 Moodle 工具。以下大多数功能已在本书的其他部分处理,我们提供了相应章节的链接:
-
课程备份:正如您将在下一章中了解到的那样,课程备份在执行过程中会影响性能,尤其是在大型系统中。如果可能,请在整体系统负载较低时安排备份程序。如果您关闭了网站范围内的课程备份并改用系统级备份,可以减少性能问题,但会失去恢复单个项目的能力。一种折衷方案是仅包含必要数据,并省略不太相关的信息,例如日志文件。所有这些内容将在第十六章 避免失眠之夜 – Moodle 备份和恢复中处理。
-
日志文件:在第十二章 通过 Moodle 报告和分析获得洞察力中,我们探讨了 Moodle 的日志记录、报告和分析。跟踪用户行为可能会损害您的服务器性能,因为必须创建并保持日志的更新。建议的做法是仅记录将进行分析和报告的数据。三个参数决定了日志的量:日志存储的数量、存储的字段数量以及日志保留的时间。
-
统计信息:如果您已启用统计功能,请注意,每当更新统计信息时,它可能会对您系统的性能产生深远影响。请回到第十二章 通过 Moodle 报告和分析获得洞察力中的收集统计信息部分,并确保配置对您系统的最小影响。
-
主页课程:主页可能会被所有用户频繁访问。在拥有众多课程的网站上,每次调用主页时都显示所有课程不太可能提供良好的用户体验。您可以通过访问网站管理 | 常规 | 网站主页 | 网站主页设置来限制最大课程数和最大分类深度参数。
-
角色和用户:我们专门用一章来介绍角色(第六章 管理权限、角色和能力)。Moodle 角色系统的强大灵活性是有代价的,那就是在上下文层次结构中需要大量查找时(避免全局角色)以及频繁应用覆盖机制时,性能会有轻微下降。
-
用户选择器:用户选择器在 Moodle 的各个地方都有显示。如果您在拥有大量用户的课程中遇到速度问题,可以通过导航到网站管理 | 用户 | 权限 | 用户策略来调整每页最大用户数设置。
接下来是 Moodle 活动,它提供了一些性能调整设置。
优化 Moodle 活动
在优化 Moodle 活动时,虽然会对性能产生积极影响,但只有在用户可以接受功能损失的情况下才应实施。以下是一些可以调整的模块:
- 成绩册优化
由于成绩册的复杂性,成绩菜单中的某些设置会影响性能。一般来说,当需要进行更多聚合和其他计算时,成绩册数据存储的填充会变慢。例如,包含子类别的聚合参数在网站管理 | 成绩 | 成绩类别设置中会增加计算成绩的轻微开销。
影响性能的第二个与成绩册相关的区域是成绩册历史记录,它迫使 Moodle 跟踪任何成绩的变化。转到网站管理 | 服务器 | 清理,您将在底部看到两个成绩册历史记录设置:

图 15.4 – 成绩册历史设置
成绩册历史记录默认开启,并且值永久保留。您可以选择完全关闭该功能或限制您希望保留成绩条目的时间。
您可以在第九章的配置成绩和成绩册部分找到有关成绩册的更多详细信息,配置 教育功能。
- 聊天优化
默认情况下,Moodle 聊天使用AJAX方法,与正常方法一样,会定期联系所有参与客户端。这两种方法的优势在于它们无需配置且可在任何系统上运行;劣势是它们对服务器性能有显著影响,尤其是在聊天活动经常使用时。一种解决方案是使用聊天服务器守护进程,它确保聊天环境可扩展。然而,该守护进程,一个在后台运行的小型系统级程序,必须在操作系统级别安装,并且仅在 Unix 系统上工作(请参阅您的管理指南了解如何进行此操作)。
要更改 Moodle 使用的聊天方法并配置一些性能参数,请转到网站管理 | 插件 | 活动模块 | 聊天。我们在第十章的同步通信部分讨论了这些问题,配置 技术功能。
以下表格列出了与性能相关的设置及其应用方法:

图 15.5 – 聊天性能设置
- 论坛优化
在拥有大型论坛的系统上,跟踪未读帖子可能会减慢活动速度。尽管影响相对较小,但可以通过转到网站管理 | 插件 | 活动模块 | 论坛来关闭跟踪,在那里您将找到跟踪未读帖子和允许强制阅读跟踪参数。
- Moodle 的 过滤器设置
当我们查看 第九章 中关于 配置教育功能 的功能时,我们关注了过滤器功能。现在,让我们再次查看过滤器,突出一些性能问题。以下是一个按优先级排序的列表,当通过访问 站点管理 | 插件 | 过滤器 | 管理过滤器 来设置过滤器时:
-
激活课程创建者所需的全部过滤器,但不能超过这些。过多的活动 Moodle 过滤器会影响服务器负载,尤其是在低端系统上。活动过滤器的数量会增加扫描每一页所需的时间,因为过滤器是按顺序应用的,而不是并行应用。
-
使用 关闭,但可用 设置尽可能多地配置活动过滤器。然后它们可以在任何课程或活动级别本地激活。
-
将最常用的过滤器(通常是多媒体插件)放在列表的顶部,因为过滤器是按先到先服务的原则应用的。
-
缓存应用于使用文本过滤器的页面,这一主题将在 MUC 部分后面讨论。此外,您应该优化 站点管理 | 插件 | 过滤器 | 通用过滤器设置 中的通用过滤器设置:仅在需要时开启 过滤器上传文件。此外,如果结果行为可接受,将 每页匹配一次、每文本匹配一次 和 系统上下文内的导航匹配 设置为 开启。我们已在 第九章 的 配置过滤器 部分讨论了这些参数,配置 教育功能。
在 Moodle 活动和模块中还有其他一些小的调整——例如,超时值——您在遇到任何性能问题时需要调整这些设置。
比功能性能更大的问题是可扩展性,这是由并发用户引起的。我们将在本章的剩余部分处理这个问题,从探索强大的 MUC 开始。
Moodle 通用缓存 (MUC)
缓存将频繁访问的数据存储在临时存储中,并使用缓存副本而不是预先获取(从磁盘)或重新计算(在内存)的数据来加速其访问。
注意
缓存已被证明是最有效的性能优化技术之一,Moodle 也不例外。
Moodle 包含一个名为 MUC 的强大缓存框架,它允许某些功能利用不同的配置缓存服务 (docs.moodle.org/en/Caching)。
理解 MUC
在我们查看 MUC 的工作原理之前,让我们探索一些基本概念:缓存类型(模式)、缓存存储和缓存定义。以下图表显示了这三个概念以及它们如何在 MUC 中协同工作:

图 15.6 – Moodle 通用缓存
Moodle 有近 100 个缓存定义——例如,获取语言字符串、配置设置或处理过的 CSS。缓存定义映射到缓存存储,这些存储作为不同缓存类型的缓存后端的连接器。到本节结束时,这一切都将更加清晰。
让我们逐一介绍每个组件,从缓存类型开始。
缓存类型
Moodle 中有三种不同的缓存类型,通常被称为缓存模式:
-
应用程序缓存:应用程序缓存处理 Moodle 特定的操作——例如,语言字符串或配置设置的缓存。这是最常用的缓存,因为它对 Moodle 性能的影响最大。
-
会话缓存:这基本上与您的 PHP 会话缓存相同。它只在极少数场景中使用;我们不需要进一步详细说明这一点。
-
请求缓存:正如其名所示,这种类型的缓存仅存储在请求的生命周期内,允许开发者优化代码。再次强调,这不是我们作为管理员必须担心的缓存类型。
下面是不同缓存类型的概述:

图 15.7 – 缓存类型(模式)
图 15.7 的最后一条条目描述了默认的缓存存储。这些是什么以及为什么它们在 Moodle 中至关重要将在以下小节中介绍。
缓存存储
在 Moodle 中,缓存存储是连接到 MUC 后端的插件。
重要提示
缓存存储连接 Moodle 到物理存储,其中缓存的 数据被存储。
如前所述,默认的缓存存储形式为文件系统(应用程序缓存)、PHP 会话(会话缓存)和内存(请求缓存)。对于大多数设置,这些是足够的,但对于大型网站,考虑一个专用应用程序缓存存储是有益的。
Moodle 附带以下四个应用程序缓存存储插件(描述大多取自各自的网站,而不是一些技术术语的彩票游戏):
-
APC 用户缓存(APCu):替代 PHP 缓存是 PHP 的内存键值存储
-
Memcached:用于存储来自数据库调用、API 调用或页面渲染结果的小块数据的内存键值存储
-
MongoDB:一种可以配置为运行得像内存数据库的 NoSQL 数据库系统
-
Redis:一个内存数据结构存储,用作可选持久性的分布式、内存、键值数据库、缓存和消息代理
其他缓存后端的插件可以在moodle.org/plugins/?q=type:cachestore的缓存存储部分找到。
所有支持的缓存存储都可以在站点管理 | 插件 | 缓存 | 配置中找到。在我们的系统中,除了 APCu 之外,所有缓存存储都已安装和配置在系统级别,因此在就绪列中有勾选标记。支持列指示缓存存储支持哪些功能;选项包括ttl(生存时间)、数据保证、键感知、多个标识符和按键搜索,如以下截图所示:

图 15.8 – 缓存存储
对于每个配置的缓存类型,您可以通过操作列中的相应链接添加实例。每个缓存存储有不同的设置,这取决于缓存后端支持的功能。以下是流行的Memcached存储的参数,这些参数在docs.moodle.org/en/Caching#Memcached中有文档说明:

图 15.9 – 添加 Memcached 缓存存储
一旦您设置了您的缓存存储和缓存实例,您必须添加存储映射,这是我们将在下一部分讨论的缓存定义的一部分。
缓存定义
Moodle 中的不同功能支持缓存。多年前,有一个单一的、统一的缓存,要么被某个功能利用,要么没有被利用。现在,通过 MUC,每个功能都通过缓存定义来表示,这些定义可以单独配置。在撰写本文时,有超过 90 个缓存定义可用,预计这个数字会随着每个版本的发布而增加。对于每个定义,以下信息是可用的:
-
定义:被缓存的特性的名称。
-
模式:缓存类型(应用、会话或请求)。
-
组件:定义所属的 Moodle 组件(核心或模块)。
-
区域:功能所属的章节——仅对开发者相关。
-
存储映射:如果没有进行自定义,这将默认为缓存模式的默认缓存存储;否则,新设置的值。
-
共享:默认情况下,这将设置为站点标识符。当修改时,可能的值是所有人、版本和自定义键(见下一条项目符号列表)。
-
可以使用本地存储:仅在多服务器系统上相关。
在操作列中,您有编辑映射、编辑共享选项,以及一个清除选项来清除此特定定义的缓存。
编辑 映射允许您指定哪个缓存存储被用作主存储,对于某些定义,也用作最终存储。这是您指定特定功能(缓存定义)使用的存储的地方。
默认情况下,每个缓存定义都在站点的实例之间共享。然而,在某些情况下,您可能希望将其更改为以下任何共享选项:
-
所有人:系统中的每个用户。
-
具有相同 ID 的网站:如果您在单个服务器上运行单个版本的 Moodle,这与前面的点相同。如果您在多服务器设置上运行 Moodle,所有系统都将包括在内。
-
wwwroot,只有具有相同版本号的网站将被包括。 -
wwwroot,您可以通过自定义键将它们分组。例如,您可能希望将一个国家的所有实例缓存在一个存储中。
要清除特定定义的缓存,只需选择清除选项。以下截图显示了一些缓存定义和描述的值:

图 15.10 – 缓存定义和映射
在网站管理 | 插件 | 缓存 | 配置页面上还有两个我们没有介绍过的元素:
-
缓存锁实例摘要:在共享环境中存在不同的锁定机制,缓存也不例外。默认情况下,Moodle 附带默认的文件锁定机制,并且可以安装额外的锁实例。然而,截至印刷时,在moodle.org/plugins上没有为 Moodle 4.x 提供此类插件。
-
无映射时使用的存储:您可以指定哪些默认映射将用于哪种缓存类型。
现在我们已经涵盖了 MUC 的所有相关概念,让我们看看在优化您的 Moodle 网站时需要考虑的项目。
配置和测试 MUC
我们已经探讨了 MUC 的复杂性。虽然这在粒度优化方面提供了巨大的灵活性,但它使得制定一个通用的配置变得不可能。Moodle 社区中有人将 MUC 控制面板比作音乐会上的大型调音台:它提供了许多可以操作的旋钮,但除非您知道每个旋钮的作用以及它们如何协同工作,否则您不太可能得到好的结果。
几个因素会影响 MUC 的配置:
-
系统的使用(数量、多样性、功能、类型)
-
基础设施(单个服务器、多个服务器、虚拟化等)
-
使用的缓存存储类型
尤其是在谈论系统使用时,几乎不可能量化这一点,因为它始终在变化。在暑假期间,使用量将最小;在考试时间,系统负载可能会上升,等等。
性能优化是一项持续进行的练习,伴随着定期的性能测试。Moodle 为不同的缓存类型提供了基本的性能测试(网站管理 | 插件 | 缓存 | 测试性能)。以下是一个示例,您可以查看 10 万个唯一请求的结果;文件缓存比会话缓存慢得多,这种表现并不令人意外:

图 15.11 – 缓存存储性能测试
虽然在 Moodle 中有一个内置的性能测试工具很方便,但它有两个显著的缺点:首先,一些插件被归类为不可测试,例如Redis和Memcached;其次,测试运行仅模拟一些独特的请求,但不会在用户位于您的系统上时反映其行为。为了克服这些缺点,需要进行适当的性能分析和监控,这将在本章末尾讨论。
在管理区域中分散着几个与缓存相关的设置,您应该根据需求进行定制:
- 语言缓存:我们在第十章,“配置技术功能”中详细讨论了本地化问题,其中我们介绍了 Moodle 处理多种语言的配置。除了将语言数量保持在最小值外,还应利用语言缓存。
语言包被缓存以提高语言字符串的检索速度。您可以通过访问网站管理 | 语言 | 语言设置来找到缓存语言菜单和缓存所有语言字符串参数。除非您修改了语言包,否则强烈建议您保持这两个设置启用,因为它们缓存了所有语言字符串而不是动态加载。
- 主题缓存:Moodle 将主题的图片和样式表缓存到本地,无论是在网页浏览器中还是在服务器上。除非您正在设计或修改主题(实际上您也不应该在运行中的系统上这样做),否则在网站管理 | 外观 | 主题 | 主题设置中的主题设计师模式设置应保持关闭状态。
您可以通过访问网站管理 | 外观 | 主题 | 主题选择器来使用清除主题缓存按钮清除主题缓存。
-
JavaScript 缓存:Moodle 使用 JavaScript 和 AJAX。除非您是开发者,否则应保持网站管理 | 外观 | AJAX 和 JavaScript中的缓存 JavaScript设置开启。同样,同一页面上的YUI 组合加载也适用。
-
RSS 缓存:RSS 源被本地缓存。您可以通过更改网站管理 | 插件 | 块 | 远程 RSS 源中的超时参数来修改缓存刷新后的时间。
-
网络缓存:Moodle 使用 cURL 从远程站点获取数据。您可以通过访问网站管理 | 服务器 | 性能来修改cURL 缓存 TTL设置。生存时间值越大,性能越好。更多关于网络的内容请参阅第十九章,“设置 Moodle 网络”。
-
仓库缓存:当浏览外部仓库,如 Nextcloud 或 Google Drive 时,文件列表将保存在本地缓存中。列表保留的时间可以通过访问 站点管理 | 插件 | 仓库 | 通用仓库设置 中的 缓存过期 参数来更改。我们已在 第十章 中介绍了仓库,配置 技术功能。
您可以通过按 $CFG->dataroot/cache 来一次性清除所有这些缓存。虽然这个功能对开发者来说更为相关,但在安装更新或系统行为异常时推荐使用。您可以在以下屏幕截图中看到这个功能的示例:

图 15.12 – 清除缓存
还有一个 CLI 脚本可以清除缓存:php admin/cli/purge_caches.php。
一旦您已设置缓存存储并正确配置所有可用的缓存选项,您应继续检查与性能相关的系统设置是否已正确配置。
优化 Moodle 系统性能
在本节中,我们将可能影响性能但不会损害任何 Moodle 功能的设置分组。涵盖的主题包括会话处理、Cron 管理、预定任务、全局搜索和系统路径。
处理会话
对于每个通过 Moodle 进行身份验证的用户(包括访客),都会启动一个会话。在性能优化的背景下,有几个相关的设置解释得很好,可以通过访问 站点管理 | 服务器 | 会话处理 来找到:

图 15.13 – 会话处理
Moodle 管理会话和 Cookie 非常出色。然而,当出现问题时,有时需要手动干预。如果特定用户遇到问题(清除缓存和 Cookie),则应在本地网页浏览器中执行此操作;如果问题影响多个用户,则应在服务器上执行,这可以通过清除数据库中存储的 mdl_sessions 表或清空 $CFG->dataroot/sessions 目录(如果会话存储在文件中)来实现。请注意,所有已登录用户都将被注销。
您还可以通过执行前面步骤的单个命令来通过 CLI 脚本终止所有用户会话:php admin/cli/kill_all_sessions.php。
清理旧会话是通过所谓的预定任务在后台完成的。Cron 管理和预定任务是以下小节的主题。
管理 cron 和预定任务
Moodle 定期执行大量后台任务。执行这些任务的系统脚本被称为 cron 脚本,并由 cron 进程执行。
重要提示
Moodle 的 cron 脚本在不同的预定时间间隔运行不同的任务。
以下图表说明了 Moodle 中计划任务执行的时间:

图 15.14 – 计划任务和 cron 进程
Cron 是一个系统进程,它触发 Moodle 的 cron 脚本,该脚本确定在特定时间槽执行哪些任务。
重要提示
cron 进程应该每分钟运行一次。
Moodle 附带一个任务调度器(站点管理 | 服务器 | 计划任务),允许您精确配置哪些常规工作何时以及多久运行一次。以下截图显示了某些选定的任务(希望您的视力比我好):

图 15.15 – 计划任务
对于每个计划任务,以下信息是可用的:
-
名称: 任务的名称和内部位置
-
组件: 触发任务的 Moodle 组件
-
日志: 每个任务执行的详细信息,包括持续时间以及数据库的读取/写入
-
上次运行: 上次任务执行的日期和时间或从未
-
下次运行: 下次任务执行日期和时间或尽快
-
分钟、小时、天、星期、月: Unix cron 格式的计划信息:
-
*****: 每分钟、每小时、每天、每周的每一天和每个月
-
/x: 每x*分钟、每小时等
-
x-y: 每小时x到y分钟之间的每分钟或每小时,从x到y之间
-
0 = 星期日,1 = 星期一,以此类推
-
-
失败延迟: 在重新尝试失败的任务之前等待的秒数
-
默认: 指定任务是否已被修改
如果您想更改任何任务的计划,必须在编辑列中选择配置图标。例如,我们选择了检查更新任务,该任务每天、每月和每周的每天在 10:48 执行:

图 15.16 – 编辑任务计划
除了已经覆盖的计划设置外,您还可以暂停任务(禁用)并恢复原始设置(将任务计划重置为默认值)。默认设置已考虑到性能。然而,您可能希望根据您的设置中的任何特殊要求进行微调。
在处理计划任务和 cron 进程时,有一些值得注意的事项:
-
可以使用立即运行选项手动启动任务。要使此操作出现在每个启用的任务下方,必须在站点管理 | 常规 | 安全 | 站点安全设置中设置允许“立即运行”计划任务选项,并且必须在站点管理 | 服务器 | 系统路径中正确配置PHP CLI 路径。
-
多个任务可以并行运行。计划任务和临时任务的并发限制可以在站点管理 | 服务器 | 任务 | 任务处理中进行配置。
-
如果 cron 运行时间超过两次执行之间的指定时间,新任务将在下一次运行时排队并执行。在任务释放之前,任务的生命周期也可以进行安排,并且可以在网站管理 | 服务器 | 任务 | 任务处理中配置临时任务:

图 15.17 – 任务处理设置
要查看正在运行的任务,请转到网站管理 | 服务器 | 任务 | 当前运行的任务。任何正在进行的进程都将列出,包括进程已经运行的时间。
每个任务的详细信息都记录在 Moodle 中,可以在网站管理 | 服务器 | 任务 | 任务日志中查看。通过报告过滤器,您可以深入到耗时较长的进程或未能完成的任务。在网站管理 | 服务器 | 任务 | 任务日志配置中的设置可以让您减少写入日志表中的日志条目数量:

图 15.18 – 任务日志配置
我们已经在安装过程中介绍了这一点,但值得重申的是,您调用 Moodle cron 作业的方法可能会对您的系统性能产生重大影响,尤其是在大型安装中。如果通过 HTTP(无论是使用wget还是curl)调用cron.php脚本,与直接通过 php –f 命令调用相比,将使用更多的内存。
Moodle 的内存管理已被证明非常高效。然而,在执行复杂的 PHP 脚本时,可能需要额外的内存,cron 就是这样的一个候选脚本。要增加内存限制,请通过转到网站管理 | 服务器 | 性能来更改额外 PHP 内存限制设置。
依赖于计划任务并且可能对系统性能产生重大影响的操作是全局搜索,我们将在以下小节中进行配置。
配置全局搜索
Moodle 自带强大的全局搜索功能,支持不同内容类型、内容区域、访问权限和可插拔的搜索引擎。
重要提示
全局搜索允许用户搜索 Moodle 中他们有权访问的任何地方。
以下图表是 Moodle 中全局搜索工作原理的简化说明:

图 15.19 – Moodle 全局搜索
索引过程(顶部)是由计划任务触发的,在此期间,自上次运行以来创建、更新或删除的任何内容和元数据都会发送到搜索引擎。搜索引擎从不从 Moodle 请求任何内容;没有内容爬取。Moodle 全局搜索可以限制为搜索区域,例如作业活动信息、文本块内容或收到的消息。搜索引擎处理接收到的数据并将其存储在其索引中。
搜索过程(底部)是由用户输入搜索词或短语触发的。查询与用户的访问权限一起发送到搜索引擎,这些权限由搜索引擎的查询机制考虑。最后这一点至关重要,以确保用户只能看到他们有权访问的结果。结果返回到 Moodle 并显示给用户。
Moodle 附带一个内部和一个外部搜索引擎插件:
-
简单搜索:一个内置的搜索引擎,支持基本的搜索操作。
-
Solr:根据solr.apache.org,“Apache Solr 是基于 Apache Lucene 的流行、快速、开源的企业级搜索引擎平台。”Solr支持文件搜索和高级搜索操作,例如布尔运算符、通配符、前缀、邻近搜索和提升。
你可以在moodle.org/plugins/?q=type:search找到额外的搜索引擎插件,例如Elastic或Azure Search。
要管理全局搜索,请转到站点管理 | 插件 | 搜索 | 管理全局搜索,在那里你应该看到一个需要通过的设置步骤表:

图 15.20 – Moodle 全局搜索设置
让我们一步一步地通过六个动作:
-
选择搜索引擎:选项是简单搜索和Solr,除非你已经安装了第三方搜索引擎插件。
-
启用搜索区域:搜索区域是分别索引的内容组。默认情况下,全局搜索索引所有搜索区域;然而,你可以在站点管理 | 插件 | 搜索 | 搜索区域中启用和禁用单个搜索区域。通过禁用搜索区域,你可以提高搜索速度,但会排除其内容出现在搜索结果中。你可能选择禁用用户搜索区域,以排除用户个人资料链接从全局搜索中。
-
设置搜索引擎:简单搜索不需要任何配置;其他则需要。
-
索引数据:索引是由全局搜索索引计划任务触发的。或者,在站点管理 | 插件 | 搜索 | 搜索区域中有多项索引操作,即更新、重新索引和删除整个索引或单个搜索区域的索引。
-
启用全局搜索:您可以在“站点管理” | “常规” | “高级功能”中启用全局搜索。在启用此功能之前,您应首先配置全局搜索并索引站点内容。否则,搜索可能会返回不完整的结果。
-
用于站点主页课程搜索:如果启用,搜索结果将包括用户可见的课程信息,即使他们没有访问课程内容。
您将在各种配置选项中找到最后一个设置,这些选项涉及搜索选项、搜索范围(例如,仅用户注册的课程)和显示偏好。这些设置在屏幕上有很好的解释,所以我们在这里不再重复。
一些更多参数被分组在全局搜索配置屏幕底部的“搜索管理”下。当在具有大量搜索索引且重建时间较长的站点上进行更改时,这些选项很有帮助。
由于Solr插件随 Moodle 一起提供,以下是一些有助于您将强大的搜索引擎作为设置一部分使用的提示:
-
Solr 必须单独安装,无论是在同一服务器上还是在专用服务器上。
-
Moodle 中的 Solr 配置位于“站点管理” | “插件” | “搜索” | “Solr”。有三个参数组:配置(Solr 主机信息和SSL支持)、文件索引和仅查询的备用设置。
-
Moodle 中的 Solr 安装和配置已在docs.moodle.org/en/Global_search上进行了很好的记录。
系统性能部分的最后配置选项是系统路径,我们将在以下小节中设置。
设置系统路径
Moodle 定期执行的操作是列出目录。此操作可以通过 Moodle 内部用 PHP 编写的常规程序运行,或者使用宿主操作系统的本地版本的功能。后者方法显著更快,因为它减少了服务器负载,但仅支持 Unix 环境。
您可以通过导航到/usr/bin/du来指定du命令的路径。一旦正确指定,这将加速目录内容的显示,尤其是如果它包含许多文件:

图 15.21 – 系统路径
这就完成了系统性能部分的介绍。为了确保任何优化都能带来更好的性能和用户体验,您需要分析和监控您的 Moodle 系统,我们将在本章的最后部分处理这个问题。
Moodle 性能分析和管理
当您设置 Moodle 系统时,您可以采取一些初步预防措施来优化您的 LMS 性能。然而,真正的测试是在 Moodle 完全运行时——也就是说,当系统处于负载之下时(“没有比生产更好的测试了!”)。
我们将查看 Moodle 的内置性能分析工具,以便您定期监控您的 Moodle 系统。虽然应用监控不能被视为一个独立的练习,但我们不会处理系统性能分析,因为这超出了本书的范围。
我们将介绍三种支持的工具:性能信息、Tideways 和 JMeter。
性能信息
Moodle 提供了一些基本性能分析信息,您可以在网站管理 | 开发 | 调试中激活这些信息。在此处,您必须启用性能信息选项。此功能显示执行时间、RAM 使用情况、正在使用的文件数量、CPU 使用率和负载、会话大小以及各种过滤和缓存措施(基于 Windows 的安装将显示较少的信息)。
性能信息进一步显示了特定页面上使用的缓存信息。对于每个缓存,显示命中、未命中和设置。缓存使用交通灯颜色突出显示:红色消耗最多,橙色消耗一些,绿色(或无颜色)消耗最少资源。这些信号是识别潜在性能问题的良好指标。
只要使用的主题支持,数据将显示在 Moodle 页脚中——例如,Boost。
您可以在以下屏幕截图中查看性能信息的概述:

图 15.22 – 性能信息
性能信息提供了有关整体 Moodle 系统和其缓存项的数据。如果您需要更深入的信息,Tideways 性能分析可能有所帮助。
Tideways 性能分析
Moodle 支持 PHP 级别的性能分析。虽然这主要是针对开发者的,但它可能有助于您识别系统中的瓶颈。内部性能分析建立在Tideways之上,它是XHProf的替代品,允许以相对较低的性能成本对 PHP 页面进行性能分析。
一旦您安装了php-tideways和php-graphvizPHP 扩展,当您导航到网站管理 | 开发 | 性能分析时,您将看到一个新菜单项:

图 15.23 – 性能分析配置
性能分析器可以配置为自动运行(将自动性能分析频率设置为除 0 以外的任何值,并在分析这些字段中指定 URL)或手动运行。后者可以是选择性的(您必须启动性能分析)或连续的(一旦开始,您必须停止它)。
一旦启用性能分析,当您进入网站管理 | 开发 | 性能分析运行时,将出现另一个菜单项,列出了已执行的所有性能分析运行的摘要信息:

图 15.24 – 性能分析运行
当你点击单个运行的 URL 或日期时,你可以将该运行标记为参考并提供注释。你还可以查看其性能分析详情,其中每个函数调用的执行时间和内存使用以表格形式展示。从这张表中,你可以查看调用图。然而,这需要安装 dot(Graphviz 包的一部分)并在站点管理 | 服务器 | 系统路径中指定Path to dot。结果是看起来令人恐惧的图表,显示了每个函数调用的顺序、依赖关系和详细信息。
在处理性能分析时的一般策略是确定执行时间最长的函数,调整你的设置,并检查时间是否已经减少。做这件事的困难在于确保测试运行是在相同或至少非常相似的条件下的。你可以在docs.moodle.org/dev/Profiling_PHP找到更多关于 PHP 性能分析的信息。
Tideways 有助于在 PHP 级别识别问题。Moodle 支持的其他外部性能分析工具是 JMeter,如以下小节简要介绍的。
JMeter 支持
Apache JMeter是另一个面向开发者的工具,但在定位 Moodle 瓶颈时可能很有帮助。要创建测试计划文件,请在站点管理 | 开发 | 调试中将调试消息设置为DEVELOPER,然后转到站点管理 | 开发 | 创建 JMeter 测试计划。在创建测试计划之前,你需要遵循以下截图中的说明:

图 15.25 – 创建 JMeter 测试计划
在 Moodle 课程上运行的性能测试的结果是一个 JMX 格式的文件,然后可以在需要单独安装的 JMeter 工具中加载和分析。
Moodle 附带了一个不受支持的工具,允许你生成随机课程数据,这在创建 JMeter 测试计划时很有帮助。你必须手动在<yoursite>/admin/tool/generator处调用脚本,在那里你可以模拟拥有数百门具有不同级别和类型的活动的课程。你可以在这里查看概述:

图 15.26 – 创建 JMeter 测试计划
你可以选择课程大小以及课程简称、课程全名和课程摘要选项。请注意,生成大型课程可能需要数小时,并且会显著影响你的系统性能。不要在生产环境中执行此操作。
现在你已经配备了某些性能分析和监控工具,你可以根据本章中描述的进行调整。看看它们对你的 Moodle 系统性能有何影响,无论是积极的还是消极的。
摘要
您在本章中学习了如何优化和监控 Moodle 的性能。我们首先提供了 Moodle 性能的概述,并简要提到了优化硬件、网络、数据库、Web 服务器和课程内容。关键 Moodle 性能主题已分组到以下部分:
-
Moodle 功能性能:我们涵盖了 Moodle 函数和 Moodle 活动中的性能问题。
-
Moodle 通用缓存:我们处理了强大的 MUC,配置了缓存类型、缓存存储和缓存定义,在测试 MUC 性能和激活各种缓存选项之前。
-
Moodle 系统性能:我们优化了会话处理、cron 管理、计划任务、全局搜索和系统路径。
本章以一个简短的 Moodle 性能分析和监控部分结束。
如您从本章中可能已经了解到的那样,优化并不总是直截了当的。它取决于各种情况,例如 Moodle 运行的系统、它所使用的硬件、网络、登录到系统的并发用户数量、执行的活动类型等等。虽然基本优化通常是直截了当的,但微调本身也是一种艺术。为了达到您 Moodle 系统的理想设置,可能需要进行大量的尝试和错误(即性能分析)。
现在您的系统已经准备好发挥其最大潜力,让我们确保您已经实施了一个专业的备份和恢复策略,这将在下一章中介绍。
第十六章:避免失眠之夜 – Moodle 备份和恢复
您的 Moodle 应用程序将包含重要数据,例如课程作业、作业、成绩以及所有管理数据,例如用户、群体和角色。因此,您必须制定良好的备份策略。
在处理信息系统时,为意外情况做好准备总是一个好的策略,并且拥有良好的备份可以确保在意外硬件或软件故障后完全恢复应用程序。我们并不期望系统会失败,但总是存在失败的可能性,而快速恢复的良好策略可以确保对用户的影响最小。本章介绍了管理备份和自动备份数据策略和选项。
Moodle 本身支持两种类型的备份:
-
课程级备份:课程备份通常是临时的,并且仅归档所选课程。您将学习如何创建课程备份、恢复课程以及使用相关的课程导入功能复制课程内容。
-
站点级备份:站点备份选项定期将所有课程和相关数据保存到指定的位置。您将学习如何设置此选项并从中恢复数据。
在我们查看系统级备份之前,包括 Moodle 备份(涵盖 Moodle 软件及其中的数据)和快照创建(完整系统镜像)之前,我们将详细介绍这两种机制。以下图表显示了三种备份类型,并构成了本章的核心:

图 16.1 – Moodle 备份
我们将通过查看两个使用备份和恢复功能的应用程序来结束本章:规划年终程序和实施课程模板。
本章将涵盖以下主要内容:
-
管理课程级备份
-
管理站点级备份
-
管理系统级备份
-
使用备份和恢复进行替代任务
管理课程级备份
课程级备份允许教师和管理员创建课程副本以备安全或传给同事。如果配置得当,课程备份可以为管理员节省大量麻烦和时间。
重要提示
课程备份包括课程的一些或全部项目。
首先,在详细讨论恢复操作期间的数据恢复细节之前,我们将查看备份过程。
创建课程备份
要备份单个课程,最好是在该课程内部,在那里您需要在课程菜单中选择课程重用选项,然后从下拉菜单中选择备份。
备份过程包括以下五个步骤,如图所示的工作流程:

图 16.2 – 课程备份工作流程
您可以通过屏幕顶部的流程链接或底部的导航按钮导航回任何步骤。我们将在以下子节中逐一介绍这些步骤。
初始设置
几个设置决定了备份将如何执行以及将包含哪些类型的信息:

图 16.3 – 课程备份 – 初始设置
一些设置仅在其他设置已被激活时才可用;例如,包含用户角色分配只能在已注册用户被包含时勾选。大多数选项都是自我解释的,但有两个选项需要一些说明:
-
如果
Jonny Walker可能会变成anonfirstname69 anonlastname69。 -
除了标准的 Moodle 备份格式外,IMS 通用课程包 1.1是一个受支持的特定格式。有关 IMS CC 的更多信息,请参阅 Moodle 文档docs.moodle.org/en/IMS_Common_Cartridge_import_and_export。
默认情况下,所有用户都可以选择具有适当权限的课程环境中的所有选项。如果您希望更改默认值和/或锁定特定设置(如前一个屏幕截图所示的包含课程日志),请转到网站管理 | 课程 | 备份 | 常规备份默认值:

图 16.4 – 课程备份默认设置
对于每个设置,都有两个复选框。第一个代表参数的默认值,而第二个值表示是否锁定。锁定允许您强制特定设置,例如,排除用户。
通常您可能会执行两种类型的课程备份:
- 内容仅备份
如其名称所示,此类备份仅包含可以传递给他人而无需转移任何关于其用户、角色、成绩等信息的内容。要执行内容仅备份,您必须取消选择包含已注册用户,这是所有与用户相关的备份选项的前提条件。
如果您希望将课程传递给其他教育工作者或使其可供下载,内容仅备份是最佳选项。另一个用例是为您自己创建一个课程的全新实例,例如,从一个学期备份课程以用于不同的学期。当您在社区中心或 MoodleNet 上发布课程时(参考第十九章,设置 Moodle 网络),您也将创建一个内容仅备份。
重要说明
默认情况下,具有教学权限的用户只能执行内容仅备份。此限制可以通过moodle/backup:userinfo能力进行更改,但应谨慎操作。
- 完整课程备份
如果您希望为潜在恢复目的备份课程,您应该创建完整的课程备份,包括用户数据(例如,论坛帖子)、课程数据和用户信息。为此,您可以保留所有设置在默认值,并使用 跳转到最终 步骤 按钮。
如果您希望备份课程日志,必须启用 包含课程日志 设置。请记住,日志可能非常大,在备份多个课程时通常超过多个吉字节。
在我们进入下一个屏幕之前,请注意:一些第三方课程级别插件(活动、块或过滤器)可能不支持备份。如果您遇到任何问题,您将不得不从备份中排除这些插件创建的项目,或者更好的是,完全避免使用该插件。
架构设置
所有学习资源和活动都按照它们在课程中出现的顺序显示。资源仅在 包含活动 参数在上一屏幕未被禁用的情况下可用。默认情况下,所有可用元素都被选中;如果您希望排除任何单个项目,您必须取消选中它们。此外,您可以通过选择/取消选择节名称本身来排除/包含该节的所有项目:

图 16.5 – 课程备份 – 架构设置
Moodle 区分 课程内容 和 用户数据。例如,论坛描述及其所有设置在论坛活动中被归类为课程内容。相比之下,所有论坛主题、帖子和对论坛的回复都被归类为用户数据。如果 包含已注册用户 选项在初始设置屏幕上被激活,可以为每个选定的活动和资源包含/排除用户数据。
选择 下一步 按钮将带您进入最后一个课程备份配置屏幕。
确认和审查
第三屏幕允许您选择备份文件名并审查要包含在存档中的项目。默认 文件名 的格式如下:
backup-<type>-<format>-<course name/id>-<date>-<time>[-nu|-an].mbz
在撰写本文时,<type> 总是设置为 <format>,其中 –nu 参数表示无用户,而 -an 是匿名用户的指示符。
如果您选择创建 .imscc 扩展名,将使用 .mbz 扩展名:

图 16.6 – 课程备份 – 确认和审查
Moodle 为备份创建了一个专有的文件格式,称为 .mbz 扩展名。Moodle 备份文件是一个压缩文件(.tgz 格式),由一个 XML 文件(描述文件内容)和实际内容、用户、日志数据等组成。
附加的备份设置部分显示了在初始设置屏幕上选择了哪些项和未选择哪些项。包含项部分通过绿色勾选标记显示所有将被包含的资源、活动以及任何将成为课程备份一部分的用户数据。红色叉号表示该项已被取消选择,而红色叉号后面跟着一个锁表示由于没有满足先决条件,无法选择该项。
一旦您按下执行备份按钮,Moodle 课程存档将被创建。
完成备份
创建的存档文件保存在课程备份区域。这个过程可能需要几分钟,具体取决于备份的数据量。如果最初选择了匿名化用户数据设置,备份文件将放置在用户私有 备份区域。
重要提示
Moodle 备份包括课程配置,其中包含课程设置、活动安排和块位置。
完成后,会显示一条简短的状态消息;如果其中包含任何错误或警告,您将需要采取适当的行动。
备份有时会在大型课程上失败,原因通常是备份过程耗尽时间或内存。如果发生这种情况,您有两个选项,这两个选项不是互斥的:
-
首先,您可以通过访问服务器 | 性能来增加额外 PHP 内存限制设置。
-
其次,您可以通过访问网站管理 | 课程 | 备份 | 异步备份/恢复来选择启用同步备份,这将触发 Moodle 以单独的后台进程执行备份(和恢复):

图 16.7 – 异步备份/恢复
异步备份每次只允许用户为同一资源有一个待处理的备份。同一资源的多个异步备份不能排队,因为这可能会导致包含相同内容的多个备份。
如果您希望在过程完成后通知启动课程备份的用户,请选择启用消息通知并自定义将要发送的通知的主题和消息属性。
这就结束了关于创建课程备份的部分。相反的操作——恢复课程备份——是下一节的主题。
恢复课程备份
要完全或部分恢复之前备份的课程,最好是在该课程内部进行,在那里您需要在课程菜单中选择课程重用选项,然后从下拉菜单中选择恢复。或者,您可以导航到网站管理 | 课程 | 恢复课程。
一旦您选择了一个.mbz文件,恢复过程包括以下七个步骤,如图所示:

图 16.8 – 课程恢复工作流程
与备份工作流程类似,您可以通过屏幕顶部的流程链接或使用底部的导航按钮返回到任何步骤。我们将在以下子节中逐一介绍这些步骤。
文件选择和确认
Moodle 将其备份文件存储在不同的 .mbz 文件中以便恢复,如下截图所示:

图 16.9 – 课程备份区域
Moodle 存档的四个位置如下:
-
导入备份文件:通常存储在 Moodle 之外并通过文件选择器或拖放选择的存档
-
课程备份区域:使用默认设置创建的存档存储在此区域
-
用户私有备份区域:存储匿名用户的存档
-
自动备份:自动创建的存档(见 站点 备份 部分)
在前面的示例中,课程备份区域中只有一个课程,称为 backup-moodle2-course-14-packt_backup-20220712-2001.mbz。从其文件名中,我们已知道课程 ID 是 14,其名称是 Packt Backup,并且它在 2022 年 7 月 12 日 20:01 进行了备份。
选择 .mbz 文件)、备份设置(与备份中的初始设置相同)和课程详情。一旦确认了这个仅包含信息屏幕,您就必须指定您希望恢复备份的位置。
选择恢复目标
恢复课程备份有多种选项:
-
作为新课程恢复
-
恢复到本课程并将备份合并到本课程中
-
恢复到本课程,删除本课程的内容,然后恢复它
-
恢复到现有课程并将备份合并到所选课程中
-
恢复到现有课程,删除其内容,然后恢复:

图 16.10 – 课程恢复 – 目标
如果您希望作为新课程恢复,您将不得不选择一个新课程将被创建的分类。如果分类数量超过 20 个,您必须使用提供的搜索功能。或者,您可以选择当前课程作为目标(恢复到本课程)。您可以选择将当前课程内容与备份合并(将备份课程合并到现有课程中)或替换它(删除本课程的内容然后恢复)。如果您选择合并选项,并且存在同名活动或资源,两者都将被保留,不会覆盖。第三种选项是将课程恢复到另一个现有课程,您必须选择它。在当前课程中恢复备份时,也存在相同的选项(合并和替换)。在继续之前,请确保点击正确的继续按钮。
恢复设置
恢复设置屏幕显示了在备份过程中选择的所有可用选项(参见图 16.1 节中的初始设置)。如前所述,这里所做的选择决定了将要恢复的数据类型以及将提供哪种类型的内容供进一步选择。此外,大多数选项都有与备份相对应的先决条件。
如果您想更改默认值和/或锁定特定设置,请转到站点管理 | 课程 | 备份 | 通用恢复默认值。对于每个参数,都有两个复选框。第一个代表设置的默认值,而第二个值表示是否锁定。锁定允许您强制特定设置,例如,排除用户。
备份架构
根据前两个屏幕上的选择,架构步骤允许您指定几个课程设置。如果您将备份恢复到现有课程,您可以选择覆盖其设置。这些是课程名称、课程简称和课程开始日期。您还可以选择保留当前角色和注册(如果这些是备份的一部分),保留当前分组和分组(如果存储在备份中),以及使用备份文件的课程设置而不是当前设置(覆盖 课程配置):

图 16.11 – 课程恢复 – 架构
您还必须选择在恢复过程中包含哪些内容和用户数据。选择机制与前面描述的备份类似。默认情况下,所有现有数据都被选中。如果您想缩小要恢复的数据,您必须手动取消选中项目。
完成恢复
在最终的看起来熟悉的审查屏幕之后,一旦按下执行恢复按钮,就会启动恢复过程。任何选定的数据都将恢复到所选目的地。完成后,将显示一个总结消息。
如果恢复的课程包含任何在您的 Moodle 系统中不存在的角色,将显示一个角色映射步骤,您必须手动映射角色以确保一致性:

图 16.12 – 课程恢复 – 恢复角色映射
这完成了关于恢复课程备份的这部分内容。在我们继续到站点备份之前,让我们了解一下与课程恢复密切相关的功能:课程导入。
导入课程数据
有时需要从一个课程复制数据到另一个课程。为了实现这一点,Moodle 提供了导入课程数据功能。然而,与备份功能不同,它不会导入用户数据,如作业提交或论坛帖子——它只会导入活动、块和过滤器的结构。例如,您可能希望从一个课程导入一个单独的测验到另一个课程。
教师可以导入他们有编辑权限的课程内容;作为管理员,此限制不适用。此机制绕过了从一门课程复制内容到另一门课程且不需要用户数据时的备份和恢复程序的要求。
要复制课程数据,您必须位于接收课程内,在那里您必须在课程菜单中选择课程重用选项,然后从下拉菜单中选择导入。
导入过程包括六个步骤,如下所示的工作流程所示:

图 16.13 – 课程导入工作流程
与备份和恢复工作流程一样,您可以通过屏幕顶部的流程链接或底部的导航按钮返回到任何步骤。由于课程导入功能实际上是课程备份和恢复功能的一个子集,因此我们只需简要提及过程中的每个步骤:
-
课程选择:您必须选择一个您希望从中导入内容的课程。如果列表超过 10 门课程(默认值),请使用提供的搜索功能。您还可以选择当前课程;这样,您可以复制多个活动。
-
初始设置:选择您希望导入的课程项目。注意用户相关选项的缺失。
-
模式设置:一个用于选择主题和活动的熟悉屏幕。
-
确认和审查:显示导入设置和包含的项目。
-
执行导入:去,去,去!
-
完成:显示摘要信息。
如果您想更改默认值并/或锁定特定设置,请转到网站管理 | 课程 | 备份 | 通用导入默认值。每个设置都有两个复选框,并且与备份和恢复默认值的逻辑相同。在此屏幕上,您还可以指定导入选项的最大课程列表数量。
导入结束本节关于课程级存档的内容,本节重点在于创建和恢复单个课程备份。为了跨课程自动化此过程,需要网站级备份,我们将在下一节中介绍。
管理网站级备份
到目前为止,我们已经处理了备份单个课程。网站级备份对您系统中的每个课程执行相同的操作,包括隐藏课程和主页。
在我们查看备份报告和通知之前,我们将配置自动备份。我们将以一些备份策略结束本节。
配置自动备份
前往网站管理 | 课程 | 备份 | 自动备份设置以安排网站备份。在这里,您将看到以下设置:

图 16.14 – 自动备份配置
配置页面的其余部分涵盖了自动备份设置,这些设置指定了哪些元素将包含在备份中。这些设置与初始备份设置相同,除了匿名化选项已被排除。
为了使备份在指定的时间自动开始,必须正确配置cron进程,这在第一章,安装 Moodle中已介绍。或者,您可以通过 CLI 启动备份过程,CLI 执行与cron进程相同的脚本。从 shell 或用于脚本中的命令执行如下(假设 Apache 用户是www-data):
sudo –u www-data /usr/bin/php admin/cli/automated_backups.php
从自动备份中恢复课程与从课程级备份存档中恢复数据相同。
为了确保备份运行正确,Moodle 提供了一个备份报告和通知,我们将在下一个小节中解释。
备份报告和通知
作为 Moodle 管理员,您必须确保备份执行已成功。为此,Moodle 提供了一个备份报告,您可以通过访问网站管理 | 报告 | 备份来找到它。它显示了上次执行的日志:

图 16.15 – 自动备份配置
报告提供了每个正在备份的课程的详细信息,即耗时(开始和结束时间)、状态以及其下一次备份的日期和时间。
30 天内没有任何活动的课程(即课程内容没有变化,也没有用户使用课程)将被排除在自动备份之外,状态显示为跳过。
在计划中的站点级备份完成后,作为 Moodle 管理员,您将收到一封电子邮件。它提供了备份课程总数以及课程备份是否正常、包含错误、未完成或被跳过的详细信息。请确保您的电子邮件设置已正确配置(参考第十章,配置技术功能)。强烈建议您每天检查这封电子邮件的内容。
为了确保自动备份的平稳和可靠执行,您必须有一个适当的备份策略,我们将在下面讨论。
备份策略
在运行自动的全站 Moodle 备份时,有几个问题需要考虑:
-
备份内容:确保存档中包含的每一项都是必需的,并且任何不必要的内容都被排除。您是否需要每晚备份整个日志和成绩册历史记录?
-
备份大小:备份文件的大小可能非常大(多个吉字节)。请确保您只保留所需的备份数量,并且您的设置可以处理。
-
备份时间:备份操作是一个 CPU 和硬盘密集型操作。确保您在网站负载相对较低时安排其执行。如果您在同一服务器上运行多个网站,建议错开备份时间或创建一个使用所述 CLI 的脚本。另一种方法是设置一个专门的备份服务器。
-
备份频率:您需要每天备份七次,还是每周备份就足够了?是否存在可以完全关闭备份设施的时间段(例如周末)?
-
备份位置:默认情况下,所有备份文件都保存在相应的课程中,这意味着备份存储在与 Moodle 相同的服务器上。如果您必须恢复多个课程,您必须分别定位每个存档,这可能是一项令人头疼且耗时的任务。
您可能希望考虑将备份存储在外部设备上(外部硬盘、NAS 驱动器、SAN 等)。此方法的替代方法是挂载备份设备并将其内容包含在组织范围内的备份中。
站点级别的备份是自动化课程备份和简化教育工作者生活的好方法。然而,它们只备份课程,而不是整个系统。虽然如果您需要恢复单个课程或某些活动时这已经足够,但在整个系统需要恢复的灾难场景中就不够了。
重要提示
您不应将课程备份设施作为您唯一的备份系统。
相反,应将系统级别的备份用作补充,我们将在下一部分探讨。
管理系统级别的备份
系统级别的备份不能从 Moodle 内部配置或执行。相反,它们必须在系统级别设置。如果您的系统托管在外部,您可能无法访问系统级别,这将阻止您执行此类备份。除非托管方已经代表您运行系统级别的备份,否则是时候更换提供商了!
有两种类型的系统备份,它们不是互斥的:
-
Moodle 备份:这些创建 Moodle 本身、应用程序数据和任何应用程序配置的存档。
-
快照:这些创建系统的镜像,如果系统需要完全回滚,则用于灾难恢复。
我们将在接下来的两个小节中简要介绍这两种方法。
Moodle 备份
Moodle 区分了存储在其中的应用程序软件和其中存储的数据。当创建备份时,这种分离的优势变得明显:只有当安装了更新或正在进行定制时才需要软件备份,而数据应更频繁地备份。
备份 moodle。大多数管理员会创建一个目录的单个存档以方便处理(在 Unix 中,只需使用 tar -cvf <backupfile>)。这一步通常只在系统升级之前或需要存档整个系统时才需要。
Moodle 将其数据存储在两个不同的位置:
-
用于 MySQL 和 MariaDB 创建单个备份文件的
mysqldumpshell 命令:mysqldump -u <username> -p [-h <databasehost>] -C -Q -e -a <database> > <backup-file>.sql
<username>必须替换为数据库用户名,-p将提示你输入密码,而-h <databasehost>仅在数据库位于单独的服务器上时才需要。《database》选项是数据库名称,而<backup-file>是要创建的存档的名称。使用.sql扩展名是常见做法。
要恢复数据库转储,请使用以下mysql shell 命令:
mysql -p <database> < <backup-file>.sql
对于其他数据库类型,请参阅相应的管理指南。
- Moodle 数据目录($CFG->dataroot):这是所有贡献文件所在的地方——例如,提交的作业、语言定制、用户个人资料图片、视频等等。就像 Moodle 系统一样,你只需要创建目录及其所有子目录的副本。在执行备份时停止 Apache 至关重要,以确保内容不会不同步。
这种方法的优点是它资源消耗较少,可以脚本化,并且恢复整个 Moodle 系统要简单得多。然而,如果不设置临时服务器,就无法检索单个活动,这与课程备份不同。
快照创建
为了完整性,这里简要提及创建快照,因为它不是 Moodle 管理员角色,而是系统管理员任务。然而,你应该确保在硬件故障或其他系统问题发生时设置了这样的机制。
快照是包含 Moodle 软件本身以及所有数据(数据库和数据目录)的整个硬盘分区(s)的镜像。快照的优点是整个系统可以回滚到创建镜像时的点。然而,从那时起添加或修改的数据将被覆盖。快照不能用于恢复单个课程或其部分,而是完全替换系统。
重要提示
无论你选择哪种备份组合,都要经常验证备份过程是否正常工作。没有什么比虚假的安全感更糟糕了——也就是说,假设你的所有数据都已备份,而实际上并没有!
这部分关于网站范围备份的讨论到此结束,涵盖了 Moodle 备份和快照。以下清单提供了一个关于备份和恢复配置的快速总结,应该注意以下事项:

图 16.16 – 备份清单
我们将通过查看两个利用 Moodle 备份和恢复功能的用例来结束本章。
使用备份和恢复进行其他任务
虽然备份的主要目的是在数据丢失的情况下恢复数据,但可以使用本章中介绍的技术执行一些应用程序。我们将简要描述其中两个:年终程序和课程模板。
规划年终程序
大多数组织都有一套年终程序,这可能是学年末、学期末、财年末,或者在滚动进出设置的情况下,每月一次。鉴于程序的性质和重要性,每个步骤都应该提前做好规划。关键考虑因素如下:
-
您何时运行年终程序?
-
需要做什么?
-
谁参与其中?
-
归档将存放在哪里?
以下是一系列典型的步骤,这些步骤可能适用于也可能不适用于您的设置。它为您提供了此类程序可能看起来如何的思路,并展示了备份功能的重要性:
-
归档:创建所有课程的完整备份,并考虑包括系统备份。确保归档存储在单独的介质上。
-
成绩导出:按课程导出成绩以存储在您的学生管理信息系统上。
-
课程重置:使用课程级别的重置功能来删除任何用户数据。(重置课程也可以批量进行。请参阅第四章中的批量管理课程部分,管理和注册课程。)
-
删除用户:删除已离开组织的用户或禁用他们的账户。
-
下一年的准备:隐藏或删除过时的课程,并添加新课程。添加新用户并为课程分配角色。
这只是一个粗略的任务清单,供您考虑。在启动年终程序之前,请确保您有一个详细的计划。
实施课程模板
常常需要创建课程模板,这些模板用作创建多个课程的基础。这个过程可能是在强调课程结构和布局同质化的组织中,或者是在希望简化其课程创建者工作的教育机构中。实现这一目标的步骤如下:
-
创建将成为您课程模板的课程。
-
将所有元素(活动、资源、过滤器、块等)添加到课程中,更改其设置,并按要求安排内容。
-
创建课程的内容备份。
-
您现在可以使用恢复机制从这个模板中创建尽可能多的课程。(此操作也可以批量进行。请参阅第四章中的批量管理课程部分,管理和注册课程。)
-
或者,您可以在课程级别的课程重用菜单中使用复制课程功能,而不是执行步骤 3和步骤 4。然而,课程复制不能批量进行。
-
可选地,您可以授予用户对课程的适当权限,以便他们可以使用导入功能。
上述列表要求您执行一些手动步骤以实现课程模板机制。您可以在 Moodle 插件数据库 moodle.org/plugins 中找到更多用户友好的方法,例如 Kickstart (moodle.org/plugins/format_kickstart)。
摘要
在本章中,我们讨论了各种 Moodle 备份替代方案。您学习了如何创建课程级别、站点级别和系统级别的备份,以及如何从每种类型中执行数据恢复。您的 Moodle 备份策略必须与您组织的整体灾难恢复计划相匹配。我们还看到了一些使用所涵盖的备份和恢复功能的应用程序。
Moodle 提供了一系列良好的备份和恢复选项。确保它们配置正确,并运行测试恢复以确保安全。没有什么比虚假的安全感更糟糕了——也就是说,假设当数据实际上没有备份时,所有数据都已备份!
在下一章中,我们将介绍一系列有用和不太有用的 Moodle 管理工具。
第十七章:使用 Moodle 管理工具
Moodle 预装了几个未分配给特定主题的管理工具;其中一些甚至不能通过熟悉的行政网页界面直接访问。

图 17.1 – Moodle 管理工具
我们将管理工具分为以下类别,每个类别都在单独的章节中介绍:
-
站点管理员预设:预设允许您创建站点设置的备份,以便在出现问题时可以回滚。
-
数据库工具:这些工具允许您应用特定的数据库操作。除了 Moodle 核心部分的部分工具外,我们还将介绍一个有用的外部工具 Adminer,它允许您直接从 Moodle 内部管理底层数据库。
-
命令行界面 (CLI):CLI 是一个内置机制,允许我们通过命令行或 shell 脚本来自动化管理过程。
-
Moosh:CLI 的强大替代品,Moosh 是第三方 Moodle Shell。我们将学习 Moosh 的工作原理并提供一些实际示例。
在我们详细介绍这些管理工具之前,让我们探索它们在 Moodle 中的组织方式。
探索 Moodle 管理工具
Moodle 对构成管理工具的分类有些模糊。当您导航到 站点管理 | 插件 | 管理工具 | 管理管理工具 时,会显示一个长长的插件列表:

图 17.2 – Moodle 管理工具
我们可以将管理工具分为以下类别:
-
转换工具:这些工具通常只应用一次,用于将功能从旧状态迁移到当前状态。例如,HTTPS 转换工具(见 第十三章 的 确保 Moodle 安全性)和 多语言升级(见 第十章 的 配置技术功能)。
-
数据库工具:这些工具用于与 Moodle 的底层数据库进行工作。在本章中,我们专门用一节来介绍数据库工具。
-
开发工具:这些工具针对 Moodle 程序员——例如,验收测试(Behat)、PHPUnit 测试和 XMLDB 编辑器。您在 第十五章 的 优化 Moodle 性能 中遇到了开发工具,当时我们处理了性能分析并使用了课程生成器。我们在这里不会处理开发工具。
-
设计工具:这些工具针对主题设计师——例如,模板库或UI 组件库。我们也不会处理设计工具。
-
标准 Moodle 功能:一些管理功能已作为管理工具实现,例如回收站、学习计划或任务调度器。这样,如果不需要,它们可以从 Moodle 中卸载,尽管这不被推荐。
前四个类别的许多工具在 Moodle 管理员网络界面中是隐藏的,只能通过直接通过 URL 调用它们来访问:<yoursite>/admin/tool/<tool>。所有核心管理工具都位于$CFG->dirroot/admin/tool的子目录中。有关大多数非标准管理工具的详细信息,请参阅docs.moodle.org/en/Admin_tools。
我们不涵盖任何被归类为标准 Moodle 功能的行政工具,因为它们要么在本书的其他地方有所涉及,要么在管理员环境中不相关。然而,有一个例外是网站管理员预设,这是唯一不属于网站管理菜单任何类别的功能。因此,让我们从我们的第一个管理工具开始。
网站管理员预设
预设允许您创建网站设置的备份,然后可以恢复。有几个用例中,这个功能非常有用:
-
尝试一组系统设置,并在它们不起作用时回滚
-
将相同的配置集应用于多个网站
-
将一个 Moodle 网站的设置迁移到另一个网站 – 例如,您的测试实例到您的生产系统
Moodle 管理员预设的工作流程如下所示 – 一个简单但非常强大的工具:

图 17.3 – 网站管理员预设工作流程
您可以在网站管理区域的常规部分找到网站管理员预设工具。这是唯一没有被放置在菜单类别的 Moodle 功能,因此在本章中对其进行了介绍。
Moodle 附带两个预配置的预设,分别标记为入门和完整。其内容的详细信息在相应的描述中提供,如下面的截图所示,其中包含我们将在此部分创建的第三个预设。

图 17.4 – 网站管理员预设
要创建您的第一个预设,请点击创建预设按钮,然后您必须提供一个名称、可选的描述和一个作者,该作者预先填写了您的姓名:

图 17.5 – 创建网站管理员预设
包含带密码的设置选项将把您网站的任何敏感信息(密码、密钥和 IP)添加到预设中,因此请确保这只会应用于内部。您可以在网站管理 | 常规 | 安全 | 网站 安全设置中的带密码的设置字段中查看和修改要排除的字段列表。
创建预设后,它将出现在列表中,与两个默认预设并列。每个预设都可用以下操作:
- 审查设置并应用:预设的详细信息显示,包括有关创建预设的人(作者)、何时(日期和时间)、在哪里(站点 URL)以及哪个 Moodle 版本的信息。一旦应用管理员预设,任何与预设不同的站点设置都将应用,如下列设置更改列表所示。

图 17.6 – 应用站点管理员预设
-
下载:Moodle 将设置导出为 XML 文件。您可以通过 导入 预设 按钮加载已导出的文件。
-
删除:永久删除预设。两个默认预设不能被删除。
-
显示版本历史:如果您在应用预设后改变主意,可以通过此操作撤销设置更改。
站点管理员预设是在设置、维护以及尝试新功能时的一种强大工具。
小贴士
将生产站点的预设作为系统文档的一部分存储是良好的实践。
管理员预设处理您站点的配置,这些配置存储在底层数据库中。以下章节将讨论一些专门的数据库工具。
数据库工具
Moodle 的数据库工具可以将数据库从一个服务器传输到另一个服务器,在整个数据库中对文本字符串执行搜索和替换操作,并允许您查看或更改数据库中的任何数据。
迁移您的 Moodle 数据库
如果您必须将 Moodle 实例的数据库从一个服务器移动到另一个服务器或迁移到另一个 Moodle 系统,您有两个主要选项。您可以选择手动创建数据库转储(或通过稍后介绍的 Adminer 工具)或使用内置的 数据库 迁移 功能。
数据库迁移工具位于 <yoursite>/admin/tool/dbtransfer。在撰写本文时,此功能也可以通过 站点管理 | 开发 | 实验 | 数据库迁移 访问。正如类别名称所暗示的,该工具是实验性的,可能在未来的版本中进入核心或从管理员界面中消失。

图 17.7 – 数据库迁移
您必须提供数据库的详细信息,该数据库将复制当前数据库的内容。这些设置与安装期间应用的设置相同(参见 第一章,安装 Moodle)。
您随后可以通过手动或通过 站点管理 | 服务器 | 服务器 | 维护模式 来手动或通过 站点管理 | 服务器 | 服务器 | 维护模式 来处理 $CFG->dataroot/climaintenance.xhtml 文件。
搜索和替换数据库内容
与数据库迁移功能相关的工具是 <yoursite>/admin/tool/replace。

图 17.8 – 数据库搜索和替换
最后一个选项,标记为我了解此操作的潜在风险,表明执行的潜在风险——除非你 100%确信替换不会对系统有任何影响,否则你最好不要接近它。一旦完成,脚本将显示所有执行的 SQL 查询。
Moodle Adminer
Adminer 是一个开源工具,用于管理不同类型的 SQL 数据库。已经创建了一个包装器,让你可以直接从 Moodle 中访问该工具。Moodle Adminer 必须安装在你的local插件部分(有关详细信息,请参阅第八章“理解 Moodle 插件”)。你可以在moodle.org/plugins/local_adminer找到安装程序。
一旦安装,你通过站点管理 | 服务器 | Moodle Adminer访问数据库管理控制台,它将在模态窗口中打开工具:

图 17.9 – Moodle Adminer 界面
默认情况下,你必须选择一个数据库。但是,如果你在站点管理 | 插件 | 本地插件 | Moodle Adminer中启用以当前数据库启动 adminer设置,则可以跳过此步骤。
一旦打开(Moodle)数据库,你就可以执行操作(如查询、更改数据或创建 SQL 转储)而无需任何 SQL 知识。
重要提示
确保你只有在了解自己在做什么的情况下才更改数据;否则,你可能会引入数据库不一致性,Moodle 将无法按预期工作。
我们不会详细介绍如何使用 Adminer,因为这超出了本章的范围。你可以在www.adminer.org找到你所需的所有信息。
这就结束了数据库工具部分,我们介绍了数据库迁移、数据库搜索和替换以及 Moodle Adminer。我们忽略了一个仅适用于 MySQL/MariaDB 的工具,并且只有在迁移仍在使用旧版 MyISAM 格式的数据库时才需要。这个工具可以在<yoursite>/admin/tool/innodb找到,它可以将任何表从 MyISAM 转换为 InnoDB 存储引擎。
此外,还有一些支持数据库相关操作的 CLI 脚本,例如mysql_engine和check_database_schema。什么是 CLI 脚本?在下一节中找出答案。
CLI
我们在书中和在第第一章“安装 Moodle”时已经遇到了 CLI 的选择性使用,当时我们处理了 Moodle 升级。然而,CLI 还有一些额外的技巧,我们将在本节中处理。
首先,让我们看看如何调用 CLI 脚本,这些脚本位于admin/cli/*或提供 CLI 选项的插件的子文件夹中——例如,auth/ldap/cli。要调用 CLI 脚本,请遵循以下标记:
sudo –u <apache_user> /usr/bin/php admin/cli/<script>.php [--params]
你的<apache_user>通常是www-data、httpd或apache。
重要提示
总是在网络服务器用户的身份下运行 Moodle CLI 脚本。
每个 CLI 脚本都有一个--help参数,它提供额外的信息,并描述调用选项和参数。以下是一些有用的 CLI 命令及其所在的章节编号。查看它们各自的 CLI 目录或访问docs.moodle.org/en/Administration_via_command_line以获取所有其他命令。这里没有列出任何参数,因为这些在--help选项中解释得很好。

图 17.10 – 一组 Moodle CLI 脚本
CLI 的真正力量在于能够将 CLI 命令嵌入到 shell 脚本中,这使得对通常耗时或易出错的常规程序进行强大的自动化成为可能。我们在第一章,“安装 Moodle”中展示了一个小的安装脚本。以下是一个另一个示例脚本,它终止所有用户会话并清除缓存,利用了一些 CLI 脚本:

图 17.11 – 使用 Moodle CLI 的示例 Bash 脚本
虽然对于支持的运算很有用,但 CLI 提供的命令集相对有限。我们将要介绍的 Moosh 可以克服这一限制。
Moosh – Moodle Shell
Moosh 代表 Moodle Shell,是一个命令行工具,允许您执行最常见的学习管理系统任务。
在您可以使用 Moosh 之前,您必须安装它(参见第八章,“理解学习管理系统插件”)。安装后,您将拥有大量的命令(截至编写时,超过 150 个!)可供使用。
Moosh 的一般语法如下:
moosh <-params> <command> <options>
为了让您了解可以使用 Moosh 做哪些事情,这里有一些示例:
-
moosh user-create test:创建用户名为test的用户。 -
moosh user-create test{1..10}:创建 10 个用户。这种枚举类型可以与许多 Moosh 命令一起使用。 -
moosh user-create --email packt@openumlaut.com --city "Heidelberg" --country DE --firstname "Alex" --lastname "Büchner" packt:所有用户配置文件值都受支持;这只是一个示例。 -
moosh info-plugins:显示所有已安装插件及其位置的列表。 -
moosh file-list course=42:输出 ID 为42的课程中所有文件的信息。还有更多与文件相关的命令,例如显示文件的系统路径或直接上传文件的能力。 -
moosh plugin-install mod_videotime:下载并安装多功能 Videotime 插件的最新版本。这有多酷?
一旦你通过管道和流将 Moosh 命令与标准 shell 命令结合使用,你将手头拥有一套强大的命令库。例如,你可能想要找到所有大于 10 GB 的备份,归档它们,并回收空间。
以下示例展示了三个 Moosh 命令的执行和输出:

图 17.12 – 与 Moosh 玩耍
第一个(moosh course-list)显示了所有课程的信息;第二个(moosh category-list)对类别做了同样的操作;最后一个(moosh user-create test{1..10})显示了创建后的 10 个用户账户的 ID。
要获取超过 150 个命令和数百个选项的完整列表,请参考 Moosh 网站moosh-online.com/commands。该列表不断增长,请确保你已经安装了最新版本。
这部分关于 Moosh 和 Moodle 管理员工具的章节到此结束。希望其中的一些功能能够简化你的日常工作,并优化你需要执行的某些常规任务。
摘要
在本章中,我们介绍了一系列管理员工具,其中一些是隐藏的且不受支持的,但仍然非常有用。我们首先探讨了管理员工具的组织方式,然后介绍了站点管理员预设和一些数据库工具,包括外部 Adminer、Moodle CLI 和强大的第三方 Moosh 工具。
扩展 Moodle 的其他方式是网络服务,我们将在下一章中介绍。
第十八章:使用 Moodle Web 服务集成外部系统
在大多数组织中,LMS 很少是一个孤立、独立的系统;相反,它几乎总是包含在机构范围内的基础设施的一部分,该基础设施包含多个最佳组件。Web 服务促进了这些系统之间的交流和通信,Moodle 也不例外。在撰写本文时,Moodle 附带近 700 个 Web 服务功能,这个数字随着每个版本的发布而增长。
在简要概述 Web 服务并提供一些应用示例之后,我们将学习 Moodle Web 服务的基本概念。接下来,我们将配置不同设置所需的通用 Moodle Web 服务功能。然后,我们将学习如何为其他应用程序控制 Moodle 设置 Moodle Web 服务。最后,我们将学习如何为用户作为客户端设置 Moodle Web 服务。
本章我们将涵盖以下主题:
-
理解 Moodle Web 服务
-
配置 Moodle Web 服务
-
为外部系统启用 Web 服务
-
为用户启用 Web 服务
我们将不会涵盖 Web 服务的任何编程方面,因为这不是一个管理任务。您可以在docs.moodle.org/en/Web_Services找到关于此主题针对用户和开发者的良好文档。
到本章结束时,您将了解什么是 Web 服务以及它们如何为外部系统和用户进行配置。
理解 Moodle Web 服务
本节将使您熟悉 Web 服务、它们的工作原理以及何时使用它们。
通过代码(PHP 和 JavaScript)扩展 Moodle 一直是可能的。由于 Moodle 的开源代码库,开发者可以修改或扩展的代码没有限制。作为一个管理员,这种情况并不令人满意,因为您无法控制 Moodle 的哪些部分正在被更改,以及,同样重要的是,哪些数据正在被访问或更改。
Moodle 有各种 API,为某些功能提供抽象层。例如,隐私 API、存储库 API 和文件 API。这些对于程序员来说非常好,因为它们减少了需要重写的代码量。除了这些接口之外,Moodle 还为我们提供了不断增长数量的 Web 服务。
重要提示
Web 服务使其他系统能够在 Moodle 内部执行操作,反之亦然。
我们为什么要这样做呢?好吧,我们可以想到四种场景:
-
您组织中的其他系统——例如,人力资源系统——必须在您的 LMS 中触发特定的操作;例如,一旦新员工被添加到系统中,必须在 Moodle 中创建一个账户,并且应在多个课程中进行注册。Web 服务极大地简化了这一过程。
-
存储在 Moodle 中的某些信息可能需要传输到外部应用程序。例如,课程完成情况、成绩或颁发的证书,这些都需要记录在学生信息系统中。同样,Web 服务对于传输此类敏感数据是事先安排好的。
-
我们在第十一章,“启用移动学习”中提到的 Moodle 应用程序内部使用 Web 服务;移动设备与 Moodle 后端之间的所有通信和数据交换都通过 Web 服务进行。
-
社区中心功能需要 Web 服务,我们将在第十九章,“设置 Moodle 网络”中介绍。
为什么作为管理员,你应该关心 Web 服务,尽管它们是为开发者设计的?好吧,这是 Web 服务的另一个优点。你可以控制哪些系统可以与你的 Moodle 系统通信,以及这些系统被允许使用哪些功能。这样,你可以管理谁可以访问你的系统,并限制他们能做什么。
以下图表展示了 Moodle 通过 Web 服务与外部应用程序交互的(非常)简化的概述:

图 18.1 – Moodle Web 服务
让我们从左到右分析这个架构:许多 Moodle 功能都表示为函数 – 例如,创建用户账户或让用户注册课程。服务是一组函数加上定义哪些用户可以访问所选功能。例如,Moodle 应用程序使用一个内置(即预定义)的服务,授予所有用户访问 Moodle 的权限。相反,一个自定义服务可能只允许访问单个专用账户。
重要提示
服务是一组功能。服务可以是用户受限、令牌受限、IP 受限或时间受限。
外部应用程序必须通过 Web 服务的认证插件与 Moodle 进行身份验证以确保安全。来自外部应用程序的通信可以是单向的或双向的,这隐含地由服务的功能决定。支持的 Web 服务协议包括 SOAP、REST 和 XML-RPC。
Web 服务返回有关调用或交易是否成功的反馈。例如,如果由于任何原因在 Moodle 中创建用户账户失败,人力资源系统将会收到通知,并在预定义的周期后重试。大多数基于 Web 服务的架构都需要一些中间件来促进排队和错误处理。
现在你对 Moodle Web 服务有了基本的了解,是时候配置协议、服务和功能了。
配置 Moodle Web 服务
首先,您必须通过站点管理 | 常规 | 高级功能中的启用网络服务设置来激活网络服务。此设置与同一页面上的为移动设备启用网络服务参数相关联;后者不能在没有前者的情况下启用。
重要提示
启用网络服务可能存在安全风险,因为您授予 Moodle 访问外部用户和系统的权限。应始终遵循“尽可能少地开放服务和功能”的原则。
其次,您必须启用网络服务身份验证插件(站点管理 | 插件 | 身份验证 | 管理身份验证)。不需要配置,因为 Moodle 内部处理所有握手操作和通信。
Moodle 支持两种可以通过网络服务连接的外部服务:
-
内置服务:这些是预先配置的服务,其中支持的函数集不能修改。Moodle 移动网络服务是 Moodle 的一部分,允许应用程序用户与 Moodle 交互。我们在第十一章,“启用移动学习”中介绍了应用程序的配置。第三方插件可能会向内置服务列表中添加更多条目。
-
自定义服务:这些是由用户定义的服务,您可以在其中配置哪些功能可以被利用。在本章中,我们将重点关注自定义服务,允许两种类型的实体访问 Moodle:外部系统和作为客户端的带有令牌的用户。
当您导航到我们系统中的 mod_attendance 插件时,该插件会在提到的移动网络服务旁边安装一个内置服务。我们还创建了两个自定义服务,一个用于测试目的(已禁用)和一个用于连接到我们的 HR 系统,如下面的截图所示:

图 18.2 – 内置和自定义网络服务
要配置网络服务,最好前往站点管理 | 服务器 | 网络服务 | 概览,它充当设置 Moodle 网络服务的仪表板。显示了两个清单,一个用于允许外部系统控制 Moodle(已处理)和一个用于作为客户端的带有令牌的用户(稍后介绍):

图 18.3 – 允许外部系统控制 Moodle
我们已经启用了网络服务(步骤 1)。Moodle 支持三种网络服务协议 – SOAP、REST和XML-RPC。我们不会提供有关这些标准的详细信息;有关更多信息,请参阅docs.moodle.org/dev/Creating_a_web_service_client。至少必须启用一个协议,这完全取决于外部应用程序、支持的协议和开发者的偏好。当您访问站点管理 | 服务器 | 网络服务 | 管理协议时,点击启用协议链接将引导您到该屏幕。通过切换启用列中的显示/隐藏图标来启用协议。在此,SOAP已被启用,这在基于 Microsoft 的环境中很常见,但不仅限于这些环境,如下面的截图所示:

图 18.4 – 网络服务协议
从技术上讲,将来可能还会添加更多的网络服务协议,例如,与 Java 和.Net 兼容的 WSDL,但到目前为止,这还没有发生。
重要提示
根据选择的协议,您可能需要安装相应的 PHP 扩展 – 例如,php-soap。
现在我们已经启用了网络服务并且至少启用了一个协议,让我们来介绍两种类型网络服务访问的配置。
为外部系统启用网络服务
外部系统是指以某种方式访问 Moodle 及其数据的程序。要完成设置,需要进行八个步骤,这些步骤遵循网络服务概述屏幕上描述的工作流程:
- 创建 特定用户
每个应用程序都应该有一个单独的用户账户。这样,您可以控制每个外部系统将使用的功能。我们的用户被称为webservice。
- 检查 用户能力
根据您选择的协议,您必须为用户允许特定的权限。您可以通过创建一个具有以下三种能力之一的新角色来实现这一点,即webservice/rest:use、webservice/soap:use或webservice/xmlrpc:use。
此角色必须在系统上下文中分配给网络服务用户。
- 选择 服务
服务是一个定义的接口,外部应用程序可以连接到它,由一系列功能表示(见步骤 4)。选择服务发生在站点管理 | 服务器 | 网络服务 | 外部服务。您必须添加一个自定义服务:

图 18.5 – 网络服务:添加自定义服务
每个外部服务都必须有一个给定的名称和唯一的短名称,一旦配置后应启用。服务必须通过令牌访问。仅授权用户设置将此访问限制为选定的用户。如果未选中,则具有令牌权限的所有用户都可以访问该服务。
您还可以使用可以下载文件或可以上传文件来指定 Web 服务的下载和上传权限。在我们的 HR 角色中,如果您还通过 Web 服务管理个人资料图片,这将很有用。您可以通过指定用户需要的必要能力来进一步限制访问。
保存服务后,选择显示的添加功能链接。
- 添加功能
在撰写本文时,Moodle 提供了几乎 700 个(!)可以通过 Web 服务访问的功能,在 Moodle Workplace 中则更多。选择的功能取决于外部系统必须执行的任务,并且应与负责的开发人员协商设置。由于我们正在连接到 HR 系统,我们将允许以下与用户相关的功能:

图 18.6 – Web 服务 – 添加功能
一旦添加了选定的功能,系统将显示用户必须具备的访问服务的必要能力。请确保这些能力已在分配给 Web 服务用户的角色中允许。
- 选择特定用户
如果在创建前面的服务时选择了仅授权用户,则必须选择此用户(们),这发生在网站管理 | 服务器 | Web 服务 | 外部服务,在那里您可以看到已设置的所有服务的列表。选择授权用户链接,它将引导您到熟悉的用户选择屏幕。选择在步骤 1 中创建的 Web 服务用户:

图 18.7 – Web 服务 – 选择用户
Moodle 将检查账户是否有足够的权限访问选定的功能。如果缺少任何能力,它们将在更改授权用户设置部分的用户选择屏幕下显示。请确保将列出的能力添加到您的 Web 服务的权限中。点击用户名将允许您限制对 IP 地址的访问并设置过期日期。
- 为用户创建令牌
Web 服务使用令牌进行安全保护。这些令牌为每个用户创建,可以通过访问网站管理 | 服务器 | Web 服务 | 管理令牌来添加。要添加令牌,选择一个用户(或多个用户),选择要访问的服务,并可选地指定 IP 地址(或范围)和过期日期,如以下截图所示:

图 18.8 – Web 服务 – 创建令牌
用户可以通过访问 moodle/webservice:createtoken 功能来访问和重置他们的网络服务令牌。
- 启用开发者文档(可选)
Moodle 可以被指示为所选协议格式中的所选功能生成开发者的文档。当您设置协议(网站管理 | 服务器 | 网络服务 | 管理协议)时,您必须勾选 网络服务文档 选项。开发者可以将其作为其安全密钥的一部分查看文档:

图 18.9 – 网络服务 – 安全密钥和 API 文档
- 测试服务
一旦设置了网络服务,选择了功能,并分配了用户,您必须测试该服务以确保它正常工作,更重要的是,外部系统只开放了所需的功能。网络服务通过导航到 网站管理 | 开发 | 网络服务测试客户端 来测试。不幸的是,测试客户端仅支持一些硬编码的功能,而不是您配置的功能。我从 Moodle 文档中引用:“测试客户端并不聪明!它允许您选择禁用/不可用的功能(尽管它在这些情况下表现良好并产生错误)。这是正常的,因为客户端有时可能会出错,因此我们需要模拟一个 糟糕的客户端!””
重要提示
在通过测试客户端执行函数时要小心,因为它们会像执行真实操作一样执行它们!
首先,您必须选择将 moodle/category:manage 权限分配给您的网络服务角色,以便此功能生效):

图 18.10 – 网络服务测试
一旦您填写了所需的值并执行了命令,您将看到以 XML 格式返回的值。如果您按下 执行 按钮,您的数据库将被修改,并且没有手动干预数据库级别,则无法撤销更改。同时,尝试一些网络服务不应能够访问的功能也是一个好习惯:

图 18.11 – 网络服务测试
要接收更有意义的信息,请通过访问 网站管理 | 开发 | 调试 然后转到 开发者 来更改 调试消息 设置。如果显示的结果包含包含 DEBUGINFO 元素的行,则表示发生了错误。否则,您应该检查在执行时函数是否完成了它应该完成的操作。我们执行了两次操作;第一次运行成功——也就是说,创建了类别。第二次运行失败是因为该类别已经存在。
现在我们已经介绍了如何为外部应用程序配置网络服务,让我们简要地看看它的“小兄弟”——为用户启用基于令牌的访问。
启用用户网络服务
有时用户需要直接访问网络服务而不是应用程序,例如,需要针对系统执行测试运行的开发者。这个过程是前一部分已涵盖的步骤的子集,并遵循网络服务概述屏幕上的以令牌为客户端的用户部分:

图 18.12 – 以令牌为客户端的用户网络服务
这些步骤现在应该很熟悉了;当允许外部系统而不是用户使用网络服务时,与之前的场景相比,只有两个小的偏差。
在步骤 3 中,将 moodle/webservice:createtoken 功能设置为允许(见步骤 5)。
要测试服务(见步骤 6),以用户身份登录,获取测试用的安全令牌,并避免在 Web 服务测试客户端中使用简单的身份验证方法。
摘要
在本章中,你学习了关于网络服务及其如何在 Moodle 内部配置的基本知识。我们涵盖了两个主要的管理任务:为外部应用程序设置网络服务和为用户启用基于令牌的网络服务。
本章涵盖的所有过程在 Moodle 和 Moodle Workplace 中都是相同的;唯一的区别是 Moodle Workplace 支持更多的网络服务功能。
在下一章中,我们将介绍 Moodle 与其他系统通信的另一种选项,即通过 Moodle 网络。
第十九章:设置 Moodle 网络连接
Moodle 提供了一个独特功能,允许您将多个 Moodle 站点联网。这种联网功能在多个场景中非常有用——例如,当您想与远程 LMS 共享资源、与另一家组织合作,或者拥有一个多校区设置,其中每个站点都有自己的 Moodle 实例时。
在概述了 Moodle 网络连接 (MNet) 之后,我们将学习所需的联网组件以及如何启用联网。接下来,我们将学习如何链接两个 Moodle 站点,这包括设置对等连接、跨实例漫游、配置远程身份验证和注册,以及使用网络服务器块。最后,我们将学习如何将多个 Moodle 站点连接到中央 MNet 枢纽。
我们将以一个与 MNet 密切相关的全新平台结束本章,该平台被称为 MoodleNet,这是一个用于查找、共享和整理开放教育资源的平台。您将学习如何启用 MoodleNet,以便您的教育工作者可以利用它。
本章将涵盖以下主要主题:
-
配置 Moodle 网络先决条件
-
设置对等网络
-
设置 Moodle 枢纽
-
启用 MoodleNet
理解 Moodle 网络连接
学习管理系统通常是独立系统。但学习很大一部分是关于沟通和协作的,MNet 通过提供在多个 Moodle 站点之间建立逻辑链接的强大功能来克服这一限制。
Moodle Docs 包含一篇关于 MNet 的非常优秀的页面,本章部分遵循该文档:docs.moodle.org/en/MNet。
支持以下两种联网拓扑:
-
对等连接:这种布局直接连接两个 Moodle 系统。如果您有两个合作伙伴组织或一个提供课程且希望其他站点的学生注册的站点,这种拓扑结构是有利的。
-
Moodle 枢纽:枢纽是一个配置为接受其他 Moodle 服务器连接并为这些远程服务器用户提供服务的 Moodle 服务器(称为 MNet 枢纽)。如果您有一个用于共享学习资源或课程的门户网站,这种拓扑结构是有利的。
这两种拓扑结构不是互斥的,可以在同一个网络中混合使用,如下面的图示所示。所有参与的 Moodle 实例都连接到一个中心枢纽,左侧的两个 Moodle 系统已经建立了对等连接:

图 19.1 – Moodle 网络拓扑
MNet 支持 单点登录 (SSO),它提供了多个 Moodle 系统的无缝集成。通过完全加密身份验证和内容交换,确保了安全性。
信息
MNet 是为 Moodle-Moodle 配对设计的。计划在未来用 OAuth2(用于身份验证)和 Web 服务(用于通信和数据交换)来替换 MNet。
现在我们已经讨论了一些网络先决条件和安全问题,让我们学习如何设置对等网络和 MNet 中心。
配置 Moodle 网络先决条件
MNet 需要在所有参与安全通信和安全数据交换的服务器上安装三个额外的组件。
检查所需的 PHP 扩展
以下元素必须在所有参与网络的 Moodle 服务器上安装:
-
在运行
configure时使用--with curl。 -
--with openssl)。 -
--with xmlrpc)。
可以向 Moodle 添加受信任的主机,这允许它们通过 XML-RPC 调用 Moodle API 的任何部分。受信任的主机可能非常危险,仅适用于开发者;我们在此不会处理此功能:

图 19.2 – Moodle 网络先决条件
要检查是否已安装所需的 PHP 扩展,请转到站点管理 | 服务器 | 环境并确保所有三个组件的状态为OK。
启用 Moodle 网络
所述 PHP 扩展确保了安全通信以及参与站点之间数据的安全传输。Moodle 将生成一个证书来加密通信,这是通过使用前面提到的证书通过 PHP 完成的。
一旦启用网络,Moodle 将使用 OpenSSL 生成一个公钥/私钥对。当您稍后连接到另一个 Moodle 站点(该站点也有一组密钥)时,将交换公钥,您将需要确认您的站点将信任此公钥。当两个站点交换数据时,发送方将使用其私钥对每个请求进行签名,并使用接收方的公钥加密消息。接收方,即持有发送方公钥及其私钥的人,将能够解密消息并执行请求。理论部分到此结束。现在,回到现实世界。
要激活 Mnet,请转到站点管理 | 常规 | 高级功能并启用网络,这将向站点管理员菜单添加网络菜单。此步骤必须在 Moodle 网络的所有参与服务器上执行。
转到站点管理 | 网络 | 设置,您将看到由 OpenSSL 创建的公钥:

图 19.3 – Moodle 网络公钥
该密钥的有效期从创建之日起为 28 天;在此之后,将创建一个新的密钥(密钥轮换)。可以通过在同一屏幕上使用删除选项手动更新密钥。
重要提示
密钥过期时间无法通过 Moodle 参数更改;然而,可以通过配置设置进行更改(见附录,配置设置)。将$CFG->mnetkeylifetime=365添加到config.php中,将过期期限增加到整整一年,以避免定期需要续签密钥。
现在,MNet 已启用且公钥已生成,是时候让服务器相互通信了。
设置对等网络
本节讨论的是对等网络,其中两个 Moodle 服务器相互连接。
为了演示目的,我们已设置两个本地站点(两个对等体);一个位于localhost:8888/one,另一个位于localhost:8888/two。
这两个站点不必位于同一域名或组织中。例如,两所大学或两所高中可能希望提供协作课程。它们各自在其域中都有自己的 Moodle 系统,并且它们都控制谁可以访问其网站的哪个部分。
如果您的两个站点托管在同一顶级域名中,并且您同时从同一网络浏览器访问这两个站点,请更改一个站点的 cookie 前缀(站点管理 | 服务器 | 会话处理),以避免任何冲突。
添加网络对等体
前往localhost:8888/one;为了建立与远程服务器的连接,我们必须输入localhost:8888/two。然后,在另一个主机上执行等效步骤:

图 19.4 – 添加对等体 I
下拉菜单提供额外的应用程序类型:mahara。我们在此不涵盖与 Mahara 的集成,并将此设置保持为默认值(moodle)。
信息
Mahara 是一个开源的电子作品集系统,可以通过 MNet 进行集成。Moodle 和 Mahara 之间的集成被亲切地命名为Mahoodle,在wiki.mahara.org/wiki/System_Administrator’s_Guide/Moodle//Mahara_Integration中有详细的文档记录。
一旦主机已添加,站点、主机名和公钥的详细信息将自动检索。SSL 验证参数决定了安全级别;建议将其保留为其默认值验证主机和客户端。可选地,选择强制主题,该主题将在漫游时使用:

图 19.5 – 添加对等体 II
一旦保存了对等体的详细信息,远程服务器的证书详细信息将显示出来。您还将看到屏幕顶部的以下三个标签页:
-
审查主机详情:我们刚刚处理了对等连接的详情。您可以通过选择站点管理 | 网络 | 对等体下的相应主机始终返回此屏幕。
-
服务:对等服务定义了站点之间启用了哪些 SSO。
-
个人资料字段:这决定了当用户从本地站点漫游到远程站点时哪些字段被填充。
重要提示
已删除的对等服务保留在系统中,当您尝试添加具有相同地址的新主机时可以重新激活。
现在两个站点开始互相通信,让我们通过配置对等服务来开始配置用户漫游。
配置对等服务
MNet 支持的 SSO 避免了在漫游到远程站点时需要登录的需求。服务标签包含四个区域。我们将重点关注最后两个,它们涉及 SSO;注册和资料服务将在稍后处理。
两个 SSO 服务代表一个双向过程,并且两个服务都必须由相应的管理员在两个 Moodle 站点上设置。
重要提示
对等服务可以发布和订阅。
重要的是要注意,本地管理员完全控制发布和订阅。其他站点的管理员永远无法修改您站点上的任何这些设置。
您必须发布身份提供者服务,以便您的用户无需再次登录即可漫游到其他站点。订阅身份提供者服务以允许来自其他站点的已验证用户无需再次登录即可访问您的站点。
您必须发布服务提供者服务,以便来自其他站点的已验证用户无需再次登录即可访问您的站点。订阅服务提供者服务以允许您的用户无需再次登录即可漫游到其他站点:

图 19.6 – 对等服务
让我们看看两个合作大学的例子。大学 A 将发布身份提供者,而大学 B 将订阅它。现在,大学 A 的学生可以无需再次登录即可访问大学 B 站点上的受限区域。
每个服务与其他服务器都有相互依赖关系,如前表所示。例如,本地站点上订阅的 SSO(服务提供者)需要远程站点上已发布的 SSO(服务提供者)。为了允许双向漫游,您的 Moodle 网络中两个对等点的所有四个框都必须由相应的管理员检查。
配置个人资料字段
当一个站点的用户首次漫游到另一个站点时,将创建一个本地用户帐户,并通过从远程站点获取数据来填充特定的个人资料字段。您可以通过选择提供的列表中显示的任何个人资料字段来覆盖默认字段。此设置存在于要导入的字段(从远程站点漫游到本地站点的用户)和要导出的字段(反之亦然):

图 19.7 – 个人资料字段
默认字段可以在站点管理 | 网络 | 配置文件字段下更改。包含在您的导入列表中但排除在远程站点导出列表中的字段将被忽略。
请记住,远程服务器上不会存储密码。由于认证机制将设置为MNet 认证,Moodle 每次用户登录时都会检查凭证。我们将在下一节处理认证。
启用 MNet 认证
要启动漫游,您必须在两个站点上启用 Moodle 网络认证插件。转到站点管理 | 插件 | 认证 | 管理认证并启用MNet 认证选项。每当远程站点的用户登录到本站点时,会自动创建一个用户账户。
当您选择认证插件旁边的测试连接链接时,您将看到允许用户漫游到您的站点和允许本地用户漫游出去的主机列表:

图 19.8 – MNet 认证
只有当用户在从一个站点漫游到另一个站点时遇到间歇性超时问题时,才在设置屏幕上更改RPC 协商超时参数。
允许漫游
只有被分配了具有moodle/site:mnetlogintoremote能力的角色的用户才能漫游到其他站点。默认情况下,此漫游到远程 Moodle能力是关闭的,并且必须为每个角色允许。请回顾第六章,管理权限、角色和能力,了解如何进行此操作。
要为登录到您站点的所有用户启用漫游,允许认证用户角色的权限。除非所有用户都被允许漫游,否则值得考虑创建一个单独的漫游角色。或者,如果您希望授予(或拒绝)来自远程主机的单个用户的访问权限,请转到站点管理 | 网络 | SSO 访问控制。您必须指定用户名、远程主机(所有主机选项仅适用于社区中心模式,稍后将讨论)和访问级别(允许或拒绝)。
新添加的用户名不必存在于任一 Moodle 站点!远程中心 ID 显示在用户列表中,这是内部 ID。这类似于用户 ID、组 ID 或角色 ID:

图 19.9 – 允许漫游
网络用户也可以通过 CSV 批量上传分配,我们已在第五章,管理用户、小组和认证中详细描述了此方法;CSV 文件中的相关字段是mnethostid。
添加网络服务器块
Moodle 提供了一个之前提到的moodle/site:mnetlogintoremote能力,设置为允许:

图 19.10 – 网络服务器块
块作为跳板,用于访问远程站点。在这里,除了我们的 Moodle 同伴,我们还设置了一个链接到 Mahara 实例。一旦您点击远程服务器,您将被重定向到所选站点,在那里您可以注册远程课程。
这样,您的第一个点对点网络就已经设置好了!
Moodle 在用户图标上方显示您登录的主机,类似于您伪装成其他用户时的情况。当您点击您的名字时,您将访问远程服务器上新创建的用户资料,该资料不能更改。将显示远程 Moodle 用户 – 从<同伴>获取的资料消息。
如果您想拒绝远程用户访问——例如,由于不当行为——请转到站点管理 | 用户 | 账户 | 浏览用户列表;您会看到用户列表中已添加了一个额外的列。远程用户不能在本地编辑;只显示他们登录的站点。在右侧列中,您可以选择拒绝访问来撤销对站点的访问。要撤销操作,请选择允许访问:

图 19.11 – 远程用户
网络服务器块为 Moodle 网络难题添加了最后一项强制性组件:主机可以相互通信,用户可以漫游到远程站点。Moodle 网络包中还有一个名为远程注册的好东西,我们将在下一小节中介绍。
配置网络注册
最后这一步是可选的,仅当您希望在一个 Moodle 系统中授予管理员权限以注册远程课程中的本地用户,反之亦然时才需要。如果您在服务器上运行共享课程,但远程站点的学习者应该是参与者,远程注册将很有帮助。为了最小化您这边的行政工作量,您可以授予远程管理员执行此任务的权限,这仅限于您指定的课程。
首先,在本地站点(即授予远程站点权利的站点),转到站点管理 | 插件 | 注册并启用MNet 远程注册插件,该插件允许本地服务器接收来自其远程对应服务器的注册。您可以在设置屏幕上更改 MNet 注册的默认角色(学生)。
现在,转到站点管理 | 网络 | 同伴,选择远程主机,然后点击服务选项卡。发布和订阅****远程注册服务,分别授予远程管理员在您的站点注册学生的权利,并允许本地学生在远程站点注册课程。这一步骤需要在同伴处重复。
两个 Moodle 站点现在都已配置完毕,允许两个服务器之间的通信,并且已经设置了课程以注册远程学生。请确保在您的课程中激活MNet 注册方法(有关详细信息,请参阅第四章,管理课程和注册)。
当您进入站点管理 | 网络 | 远程注册客户端时,您将看到本地用户注册的远程主机列表。当您点击一个主机时,将显示为远程注册提供的课程。然后您可以像管理本地课程中的用户一样编辑注册:

图 19.12 – 远程注册
这就结束了关于在 Moodle 主机之间设置对等连接的漫长章节。接下来,我们将探讨另一种受支持的网络安全拓扑:Moodle 中心。
设置 Moodle 中心
Moodle 或 MNet 中心类似于对等网络,唯一的区别是它接受来自多个 Moodle(和 Mahara)服务器的连接。虽然这可以通过使用多个对等连接手动设置,但中心模式会自动接受任何尝试连接到它的主机。这可能会节省大量时间和维护成本,但代价是使您的站点对其他 Moodle 实例开放。
通常使用中心模式实现一个公共学习门户,该门户的资源可以在多个站点之间共享。每个希望访问门户的 Moodle 实例都必须配置为连接到中心。
一旦启用网络,请选择将充当中心的 Moodle 站点,并转到站点管理 | 网络 | 管理对等以启用注册所有主机(混杂模式)。实际上,中心是一个以特殊模式运行的常规 Moodle 站点。
所有主机都被视为对等站点,除了审查主机详细信息标签为空。所有其他设置都与对等参数相同。您可能决定流量(即认证和注册)只能单向进行:从不同的 Moodle 站点到中心。您可以使用服务标签下的SSO-Publish和SSO-Subscribe选项来控制这一点:

图 19.13 – Moodle 中心与连接对等
设置 MNet 中心的初级用例是作为跨站点共享资源的门户。MNet 的一个更现代的替代方案是 MoodleNet,我们将在下一节中介绍。
启用 MoodleNet
MoodleNet 是 Moodle 为教育工作者提供的开源社交媒体平台,专注于共享开放许可的学习资源。MoodleNet 是 Moodle 生态系统的重要组成部分,可以从 Moodle 内部或直接通过moodle.net访问。
重要提示
MoodleNet 旨在寻找、共享和整理开放教育资源。
尽管该平台针对的是教师和内容创作者,但作为管理员,您必须确保您的同事能够内部共享(适当且合法)资源,并与全球同行共享。
MoodleNet 集成的流程在以下图中展示:

图 19.14 – MoodleNet 集成
假设您是一位课程创建者,已经开始开发关于特定主题的模块。在课程内部(通过活动选择器),调用 MoodleNet 并浏览资源。当选择一个元素(从简单的学习要点到整个课程)时,将使用 Moodle 的标准恢复过程将资源导入到您的课程中。这些步骤可以重复多次,并支持有效的内容整理。
MoodleNet 连接默认开启,因此请确保在站点管理 | 常规 | 高级设置下已勾选启用 MoodleNet 集成选项。
拥有创建或管理活动权限的用户可以从活动选择器浏览moodle.net的公共目录,并将资源导入到他们的课程中。请确保在站点管理 | 课程 | 活动选择器 | 活动选择器设置下已选择MoodleNet选项,以便在活动选择器的底部显示链接:

图 19.15 – MoodleNet 配置
如果您希望更改提供给用户的 MoodleNet 实例的名称,请转到站点管理 | 常规 | MoodleNet | MoodleNet 设置,在那里您将看到两个参数,MoodleNet 实例名称和MoodleNet URL。只有当您运行自己的实例或希望连接到替代的 MoodleNet 系统时,才更改后者选项。
Moodle 允许您部署自己的安全且可扩展的 MoodleNet 实例。MoodleNet 是使用 Node.js 和 ArrangoDB 开发的。您可以在 www.npmjs.com/package/@moodlenet/ce-platform 找到如何设置本地实例的详细信息。
Moodle 与 MoodleNet 之间的集成计划在未来将得到增强。值得期待的关键功能是教育工作者能够轻松地将活动分享到 MoodleNet。查看即将发布的版本说明,以了解您将能够配置此即将推出的功能的哪些管理任务。
这部分关于通过 MoodleNet 使您的教师和内容创作者能够共享资源的行政方面到此结束。
摘要
在本章中,您学习了如何将不同的 Moodle 系统联网。设置过程需要几个步骤,以下是一个总结的清单:

图 19.16 – MoodleNet 清单
在概述了 MNet 之后,我们介绍了所需的组件以及如何启用网络功能。
我们链接了两个 Moodle 网站,这涉及到设置对等连接,跨实例漫游,配置远程身份验证和注册,以及使用网络服务器块。
然后,我们介绍了中央 MNet 中心的概念,用于连接多个 Moodle 网站。
最后,我们启用了 MoodleNet,这是一个用于查找、共享和整理开放教育资源的平台。
Moodle 的网络功能为学习管理系统引入了一个新的维度。不同的系统可以逻辑上连接起来,从一个 Moodle 网站漫游到另一个网站可以得以简化。网络化的 Moodle 主机为组织内部实体或外部网站之间开辟了全新的机会。
另一个代表多个实体的设置是多租户模式,这是本书最后一章的主题。
第二十章:支持多租户
本章讨论了在 Moodle 中设计和实现多租户的不同方法。如果以下任何场景对您感兴趣,那么本章就是为您准备的:
-
一个代表一个地区或国家多个学校或学院的权威机构希望为每个学校或学院提供独立的 Moodle 系统,但需要集中管理这些系统
-
一个拥有多个客户、每个客户都需要自己的封闭区域的私人培训机构
-
一个拥有地区办事处、每个办事处都需要自己的学习空间的公司
首先,我们将概述多租户是什么以及为什么没有一种一刀切解决方案,然后再介绍三种不同的实现类型。
第一种方法,通过分类的多租户,使用一个带有特定定制课程类别和权限的单个 Moodle 实例。
第二种实现方式,通过集中代码库的多租户,提供独立的独立 Moodle 实例并将所有责任委托给本地管理员。
最后,我们将描述多租户如何在 Moodle Workplace 中实现。
本章将涵盖以下主题:
-
理解 Moodle 多租户
-
通过分类支持多租户
-
通过集中代码库支持多租户
-
支持 Moodle Workplace 中的多租户
理解 Moodle 多租户
多租户究竟是什么?在 Moodle 环境中,多租户可以定义为以下内容。
重要提示
在 Moodle 多租户设置中,独立的实体或实例(租户)被集中管理,其中特定功能被下放并本地管理。
下面的径向图展示了 Moodle 多租户的简化高级视图:

图 20.1 – Moodle 多租户:高级视图
在多租户方面,有两个关键的高级问题需要回答:
-
哪些功能是在集中处理的,哪些是委托的 – 即在租户级别处理的?
-
哪些元素可以在租户之间共享(如果有的话)?
这些问题至关重要,因为答案决定了哪种类型的多租户适合您的组织。
让我们进一步深入到 Moodle 环境中的两个维度 – 功能和共享 – 如以下图所示:

图 20.2 – Moodle 多租户:功能和共享
当查看可能受多租户影响的具体 Moodle 功能时,会引发更多问题:
-
用户:用户账户是集中管理并分配给租户,还是租户管理员可以本地管理用户?关于身份验证呢?每个租户是否有单独的身份验证机制,或者登录是全局管理的?用户名是否必须在所有租户中唯一?用户能否在多个租户中?每个租户是否都有自己的访客账户?租户感知的用户配置文件字段怎么办?是否应该为每个租户设置用户配额?还有租户群体和租户角色呢?
-
课程:课程(和类别)将集中管理、本地管理还是两者兼而有之?课程能否在租户之间共享?来自多个租户的用户是否能够注册同一课程,反之,用户能否在多个租户中注册课程?
-
插件:所有租户都有相同的插件,还是可以在租户级别激活和停用?每个插件的配置是否可以针对每个租户不同,或者对所有租户都是相同的?
-
管理员设置:哪些全局设置可以单独配置(如果有)?是否应该允许主管理员锁定特定的配置设置,以防止个别租户管理员更改这些值?
-
管理员功能:哪些管理员工具,如报告和备份,可以被租户管理员配置和操作?关于安全和隐私设置呢?是否允许跨租户报告?
-
主题:主要主题适用于所有租户,还是每个租户都可以有自己的设计?关于一个可以针对每个租户进行品牌化的白标主题呢?
-
Moodle 代码:代码库对所有租户都是相同的,还是个别租户可以有他们自己的代码(即,进行修改)?
列表可以一直继续下去。从问题中可以看出,对于多租户来说,不可能有一种一刀切的方法。当你让三位 Moodle 顾问提出一个多租户清单时,你很可能会收到四个不同的版本。
现在我们已经提出了几个问题,让我们看看三种(非常)不同的多租户方法,希望能回答其中的一些问题。
通过类别支持多租户
多租户最简单的形式是将 Moodle 系统配置为使一个类别代表一个租户。以下图表说明了这种方法:

图 20.3 – 通过类别实现多租户
一个类别代表一个隔离区域(租户),在这里课程是本地管理的。用户可以通过类别群体分配;也就是说,用户可以是多个租户的成员。
您可以为每个类别分配一个专用主题,就像我们在第七章中看到的,增强 Moodle 的外观和感觉。然而,用户在登录之前不会看到这个品牌。应该创建一个新的类别管理员角色,并相应地授予适当的权限——例如,添加子类别和课程的权限。
基于类别的这种方法的一个主要缺点是插件只能在整个站点范围内配置,而不能在租户(即类别)级别配置。您可以通过使用每个模块的 addinstance 能力来绕过这种限制,这允许您控制哪些活动可以添加到哪些课程中。然而,这种能力仅适用于活动,不适用于其他插件,如身份验证、注册或剽窃。addinstance 也只能应用于课程级别,而不能应用于类别级别。
以下清单总结了这种穷人的多租户方法:

图 20.4 – 清单:通过类别实现的多租户
通过类别实现的多租户主要适用于用户集中管理且部门、学院或其他实体仅控制课程内容的网站。这种方法不适用于需要更高程度租户级别自主权的网站。通过集中化代码库实现的多租户克服了这种限制,如下一节所示。
通过集中化代码库支持多租户
这种多租户方法的主要思想是拥有一个单一的代码库,但多个独立的 Moodle 实例。
这种模型适用的一种例子是,每个租户代表该地区的学校或学院,每个学校或学院都有自己的 Moodle 管理员、主题和管理设置,用于管理用户、课程、隐私和成绩。
以下图示说明了这种联邦方法:

图 20.5 – 通过集中化代码库实现的多租户
此解决方案需要两个主要配置步骤:
- Web 服务器配置:
对于每个 Moodle 实例,都需要一个单独的虚拟主机,其中 ServerName、ErrorLog 和 CustomLog 参数指向单个实例(租户),但 DocumentRoot 变量必须在所有虚拟主机中保持一致,以确保使用相同的代码库(CFG->dirroot)。虚拟主机可以是单独的 vhost 文件,也可以是 httpd.conf 中的 <VirtualHost> 条目。
- Moodle 设置:
存在一个主要的 config.php 文件,作为所有其他由单个 config.php 文件表示的实例的启动平台。这些本地 config.php 文件必须存储在单独的位置,并必须遵循严格的命名约定(在我们的例子中,为 <域名>_config.php)。这些配置文件的安装和维护通常通过脚本实现,以确保一致性。
要使此方案生效,主 config.php 文件必须按以下方式修改,假设您的本地 config.php 文件存储在专门的 /tenants 文件夹中:
<?php // Moodle configuration file
$moodle_host = $_SERVER['HTTP_HOST'];
require_once('/tenants/'.$moodle_host.'_config.php');
在每个本地 config.php 文件中,$CFG->dirroot 必须设置为在此 vhost 中指定的 DocumentRoot 的相同值。
可以进一步自定义本地配置文件,以适应特定租户的任何特殊需求。例如,您可能希望冻结租户管理员不得修改的特定管理参数。
使用这种设置,您只需维护单个代码库,并为每个租户提供一个独立的、独立的 Moodle 实例。该实现也适用于您必须根据需要提供 Moodle 实例的环境,例如在培训或开发环境中。
以下清单总结了这种集中式的多租户方法:

图 20.6 – 概述:通过集中式代码库实现多租户
目前提出的方案为多租户提供了非常不同的解决方案:一个方案使用单个 Moodle 实例,并配置了课程类别和权限,而另一个方案则提供独立的独立实例,并将所有责任委托给本地管理员。以下章节中提出的实现方案位于这两种方案之间:一个具有内置租户功能的单个 Moodle 实例。
在 Moodle Workplace 中支持多租户
本书是关于 Moodle 管理和其所有内容也适用于 Moodle Workplace。由于 Moodle Workplace 提供独特的功能来满足多租户需求,我们将做出例外,并在这里介绍仅适用于 Moodle Workplace 的功能。本节的部分内容来自(广告警告!)Packt Publishing 出版的我的书《Moodle Workplace 企业学习》中的“租户、组织和团队”章节。
Moodle Workplace 中的多租户有两个关键部分:
-
租户:租户是完全隔离的实体,拥有自己的外观和感觉、结构、用户和学习实体
-
共享实体:支持在租户之间共享课程和证书,也支持共享数据,如计划、报告或组织结构
我们将在以下两个子节中介绍 Moodle Workplace 多租户的两个方面,通过描述它们的一般工作方式。有关 Moodle Workplace 强大而通用的多租户功能的实现细节,请参阅docs.moodle.org/en/Multi-tenancy,该文档也由作者编写和维护。
理解 Moodle Workplace 租户
在 Moodle Workplace 中,租户是隔离的实体,拥有自己的用户、层次结构、角色、动态规则、主题设置、报告、自定义页面和学习实体(课程、计划和认证)。
所有 Moodle Workplace 工具都支持多租户感知 – 根据功能,支持不同级别的多租户。以下图表展示了租户和多租户感知元素的高级视图:

图 20.7 – Moodle Workplace 多租户
在安装期间或从 Moodle LMS 升级到 Moodle Workplace 之后,将创建单个默认租户。每个租户都有以下属性:
-
租户名称和ID 号:租户的名称和唯一的租户标识符。
-
站点名称和站点简称:这两个租户设置分别覆盖站点管理 | 常规 | 站点 主页设置中的完整站点名称和站点简称设置。
-
workplace.openumlaut.com?tenant=packt。 -
课程类别:属于特定租户的课程必须位于租户类别中。我们将在处理跨租户共享内容时详细介绍该功能。
在处理 Workplace 中的租户用户时,有两个关键规则——有些人可能称之为限制:
重要提示
用户始终被分配给一个租户;账户不能没有租户。
用户不能被分配给超过一个租户;账户始终只属于一个单一租户。
当创建新的用户账户时,无论是通过自我注册、手动输入、批量上传还是通过网络服务,除非另有说明,否则总是附加到默认租户。以下图表说明了用户如何分配给租户:

图 20.8 – Moodle Workplace:用户和租户
每个用户恰好属于一个租户,尽管这可能在将来发生变化。Moodle Workplace 支持租户用户配额,并允许您指定允许的最大租户数量。
Moodle 的用户配置文件字段已扩展,允许为每个租户定义不同的用户配置文件字段。当配置文件字段属于特定租户的类别时,它们将只出现在该租户用户的配置文件中;这也包括注册和编辑表单。
每个租户可以有零个、一个或多个租户管理员,他们拥有下放的管理功能,允许您微调他们的责任级别。除了处理租户用户外,租户管理员默认有权管理租户角色、配置租户认证设置、调整租户品牌和创建租户仪表板:
- 租户角色:
可以分别为每个租户独立管理用户角色的分配——因此,处理租户几乎就像是一个上下文。
- 租户认证:
Moodle Workplace 支持多租户认证;您可以为不同的租户配置不同的认证选项。在撰写本文时,支持的认证方法有手动、基于电子邮件的自我注册和OAuth 2。SAML是一个明确支持的第三方认证方法。有关更多详细信息,请参阅docs.moodle.org/en/Multi-tenancy_authentication。
- 租户品牌:
您可以通过配置多租户感知的 Workplace 主题来自定义租户的外观和感觉。品牌元素、图像、颜色、自定义 SCSS 和页脚在 Moodle Docs 中有详细描述,请参阅docs.moodle.org/en/Workplace_theme。
- 租户仪表板
默认情况下,所有租户仪表板都链接到默认站点仪表板中定义的内容,并且对任何租户的新用户来说,对这一页的任何修改都会显示出来。任何具有适当权限的用户(默认为站点和租户管理员)都可以定义一个具有与主仪表板相同编辑能力的特定租户仪表板。租户管理员可以管理其租户的仪表板并重置租户用户的配置。
所有 Moodle Workplace 工具,如程序、认证、自定义页面、动态规则和组织结构(部门、职位和职位),都完全支持多租户。除了按租户定义和管理这些功能外,Moodle Workplace 还支持在租户之间共享内容和数据,如以下子节所述。
理解 Moodle Workplace 共享实体
Moodle Workplace 支持两种方式来促进租户之间的共享:
-
共享内容:共享课程和证书
-
共享空间:共享 Moodle Workplace 数据,例如程序或组织结构
让我们简要看看这两种选项。
在 Moodle Workplace 中共享内容
通常,每个租户都有自己的课程类别,因此也有自己的课程。手动注册方法已修改,因此用户选择器仅显示当前租户的用户。然而,在某些情况下,您可能希望在不同租户之间共享特定的课程,这可以通过将课程放置在共享 课程类别中来实现。
多租户不适用于课程内容,这意味着如果学习者或培训师注册了课程,他们在浏览课程时将看到来自其他租户的用户。这种行为是有意为之的:假设您的组织有一些共享课程。可以假设您希望学习者一起学习,并且来自一个租户的培训师对所有学习者来说都是培训师,无论他们的租户是什么。
如果您在不同租户之间共享课程,并且希望每个租户的用户独立学习,他们必须属于不同的组。当共享课程是程序的一部分时,自动将分配到不同的组。
我们在第九章“配置教育功能”部分中“技能和激励”部分介绍的证书工具,使用了前面描述的共享课程类别功能。如果证书模板放置在租户课程类别中,它仅限于这个特定的租户;否则,它将在所有租户之间共享。
自定义页面允许站点和租户管理员通过轻松添加新页面到导航中,为不同的受众创建个性化的体验。这些页面上的内容可以使用标准的 Moodle Workplace 块进行定制。虽然租户自定义页面是针对单个租户的,但全局自定义页面是在所有租户之间共享的。
使用共享空间在 Moodle Workplace 中共享数据
共享空间功能使得可以在所有租户之间共享实体。它就像一个特殊的租户,用户可以创建在其他租户中可用的受支持实体。
重要提示
共享空间是一个特殊的租户,用于在所有租户之间共享 Moodle Workplace 实体。
目前,以下 Workplace 工具在共享空间中受到支持:
-
项目和认证
-
组织结构(部门、职位和职位)
-
动态规则
-
报告
在以下屏幕截图中,您可以看到一个自定义报告列表,以演示共享空间功能。Moodle Workplace 的报告生成器与在第第十二章中描述的相同,通过 Moodle 报告和分析获得洞察力,只是有更多的报告来源和共享空间的支持:

图 20.9 – Moodle Workplace:用户和租户
两个报告(已颁发证书和新用户(所有))旁边有一个小标记,表示它们是在租户之间共享的,而其他两个报告仅在本地租户中可用。
这就完成了对 Moodle Workplace 中多租户的概述,这也适用于 Moodle Workplace 应用程序。为了总结,我们创建了一个熟悉的清单,如下图所示:

图 20.10 – Moodle Workplace 中多租户的总结
要了解更多关于 Moodle Workplace 中多租户的有趣阅读,请查看moodle.com/news/lms-multi-tenancy上的文章。
总结
本章讨论了支持 Moodle 多租户的不同方法。我们首先定义了什么是多租户,并说明了为什么需要不同类型的多租户实现。我们介绍了三种不同的方法,其中之一可能符合您的需求。
第一种模型,通过类别实现的多租户,使用了一个配置了课程类别和权限的单个 Moodle 实例。
第二种方法,通过集中式代码库实现的多租户,提供了独立的独立实例,并将所有责任委托给本地管理员。
最后,我们介绍了 Moodle Workplace 中的多租户功能,这是目前可用的最灵活的即装即用实现。
我们介绍了三种代表性的实现,以促进 Moodle 的多租户功能。当然,这些解决方案可以根据您的个别需求进行扩展或进一步修改。
我们感兴趣的 config.php 值是以美元符号开头的。每个参数都有以下信息格式:
我们将首先检查 config.php 并探讨 Moodle 支持哪些类型的参数。在提供这个概述之后,我们将查看两种类型的配置设置:

<value> 参数必须是参数接受的类型,这取决于设置的类型。以下表格提供了每种类型的详细信息:
-
配置设置
-
重要提示
本附录旨在提供您可以在 config.php 中修改的参数列表以及每个值将产生的影响。
config.php 配置文件包含多个设置和变量,这些变量极大地影响了 Moodle 的运行方式。它位于您的 Moodle 系统主目录中 ($CFG->dirroot),可以使用任何文本编辑器进行编辑。
修改 config.php 时请小心!Moodle 严重依赖于其内容,任何错误都可能导致软件故障。

在修改配置文件之前,您应该创建其备份,以便在出现问题时可以回滚到它。此外,请确保文件权限设置正确,因为该文件包含纯文本数据库用户名和密码。在 Linux 环境中,所有者应为 root,组也应该是 root,权限设置为 644。以下截图显示了示例配置文件:
config.php。
图 A.1 – 示例 config.php 文件
<parameter> 是配置设置的名称。每个设置都有一个唯一的标识符。
$<object>-><parameter> = <value>;
图 A.2 – 配置设置中支持的数据类型
配置参考——概述
系统设置:我们区分默认和补充配置值。前者将由安装程序创建,对于 Moodle 的运行通常是必需的;后者是改变 Moodle 行为的参数。
<object> 参数是 Moodle 中使用该参数的部分 ($CFG 或 $THEME)。第三方模块或自定义发行版可能引入了它们自己的对象——例如,$TOTARA。我们将重点关注 $CFG 对象,因为这些与管理员最相关。
每个参数都必须以分号结尾。要注释掉一个参数,请在其前面加上两个反斜杠。
实现多租户的一些方面可能看起来技术性强、令人畏惧且劳动密集,但如果遵循一个稳固的策略,可能还需要专业和经验丰富的 Moodle 合作伙伴的帮助,那么这将是一个相对无痛苦的过程。
在我们处理不同的设置之前,我们将讨论一些可能有用的工具。由于没有可用的设置列表,你必须自己生成。为此,请在你的 $CFG->dirroot 中执行以下 shell 命令:
grep -r -h -o '\$CFG->[a-z][[:alnum:]_]*' . | sort -u
这一系列连接的命令将生成一个按字母顺序排列的所有可用 $CFG 变量的列表。moosh config-get 命令(见第十七章,使用 Moodle 管理工具)仅提供给你可以通过 Moodle 管理界面设置并存储在 mdl_config 中的所有配置变量列表;它排除了我们感兴趣的 隐藏 变量。
Moodle 提供了一个报告,允许你通过管理界面监控任何配置设置的所有更改。你可以在 网站管理 | 报告 | 配置更改 中找到该报告。

图 A.3 – 配置更改报告
表格显示了在 网站管理 部分对设置所做的任何更改。对于每个修改,日期、名字/姓氏、插件、设置、新值和原始值都会显示。
如果你正在尝试配置变量,请考虑使用我们在第十七章,使用 Moodle 管理工具中讨论的网站管理员预设。该工具允许你创建网站设置的备份,如果出现问题,可以回滚。
配置参考 – 管理设置
config.php 中的每个参数。如果值已通过此方法设置,则它实际上是硬编码的,无法通过 Moodle 界面更改,即使是管理员也无法更改。
例如,你可能想确保管理员不会在内部网站上打开 HTTPS 登录,即使是不小心。如果没有安装 SSL 证书,激活此设置将使所有人无法访问网站。为此,请在 config.php 中输入以下行:
$CFG->loginhttps=false;
你如何知道参数的名称?前往 Moodle 中相应的设置(在这种情况下,网站管理 | 安全 | HTTP 安全),你将在标签下方看到参数的名称。
小贴士
你可以在管理菜单的搜索框中搜索任何参数。
如果值在 config.php 中指定,Moodle 将在参数旁边显示 定义在 config.php 中,这表明该设置不能通过管理界面更改。对于这些固定设置,也会显示无效值。在以下屏幕截图中,调试消息的值是不正确的,而显示调试消息的值是正确的:

图 A.4 – 固定配置设置
如果你希望强制插件设置,你必须将它们放入一个名为 forced_plugin_settings 的特殊数组中(稍后参考可选参数的说明)。
配置参考 – 系统设置
本节包含配置设置的实际情况;解释来自帮助页面、论坛帖子以及源代码中的注释。
默认参数
默认参数是由安装程序创建的设置,来源于config-dist.php。大多数设置对于 Moodle 的运行是必需的,因此修改它们时要小心。参数按它们在config.php中默认出现的顺序列出:

图 A.5 – config.php 默认参数
除了默认参数外,还有数百个可选参数,其中一些我们将在以下小节中处理。
可选参数
有超过 300 个config.php参数不能通过 Moodle 管理员界面进行修改。这些隐藏设置允许您在不更改任何代码的情况下修改 Moodle 的行为。
我们只涵盖了一组代表性的设置,忽略了那些仅与开发人员和设计师相关的设置。我们还忽略了过时和晦涩的参数以及与管理员设置中相对应的参数。参数已按字母顺序列出,并且为了简化,一些参数已被分组。
可用的类型是数组、二进制、数字、列表和字符串:
| 名称 | 类型 | 描述 |
|---|---|---|
| adhoctaskageerroradhoctaskagewarn | N | Moodle 检查临时队列中任务有多久,在 10 分钟时警告,在 4 小时时出错。 |
| admineditalways | B | 当设置为 true 时,允许管理员在任何时候编辑任何帖子。 |
| apacheloguser | N | 记录 Apache 日志:0 = 关闭,1 = 用户 ID,2 = 全名,3 = 用户名。 |
| apachemaxmem | N | Apache 子进程在完成请求服务后,超过此内存阈值将被回收。 |
| backuptempdir | S | 可以指定不同的备份临时目录。对于普通 Web 服务器,请使用本地(快速)文件系统。服务器集群必须使用共享文件系统进行backuptempdir。目录不得通过 Web 访问。 |
| bounceratio | N | 默认值为20。参见$CFG->handlebounces。 |
| customfiletypes | A | 在站点管理 | 服务器 | 文件类型中添加条目,例如。
|
$CFG->customfiletypes = array(
|
|
(object)array(
|
|
'extension' => 'mobi',
|
|
'icon' => 'document',
|
|
'type' => 'application/x-mobipocket-ebook',
|
|
'customdescription' => 'Kindle ebook'
|
|
)
|
|
);
|
|
| customfrontpageinclude | S | 您可以用自己的版本替换主页。moodle.org使用这种方法。只有中心区域将被替换,不包括页眉、页脚或块。 |
|---|---|---|
| 名称 | 类型 | 描述 |
| customscripts | S | 启用此设置将允许自定义脚本(通过完整路径名指定)替换现有的 moodle 脚本。例如,如果 $CFG->customscripts/course/view.php 存在,则将使用它而不是 $CFG->wwwroot/course/view.php。目前,这仅适用于包含 config.php 并作为 URL 部分调用(index.php 是隐含的)的文件。自定义脚本不应包含 config.php。警告:替换标准 Moodle 脚本可能存在安全风险,并且可能不与升级兼容。然而,当需要修补特定页面而不实际覆盖核心代码时,这很有用。 |
| debugimapdebugsmtp | B | 在向 IMAP/SMTP 服务器发送电子邮件消息时启用详细调试信息(需要 $CFG->debug 设置为 DEBUG_DEVELOPER)。 |
| debugusers | S | 以逗号分隔的用户 ID 列表,这些用户总是看到调试消息。 |
| defaultblocks | A | 新课程的默认块变量,例如,participants、activity_modules、search_forums、admin、course_list、news_items、calendar_upcoming、recent_activity。此设置可以针对不同课程类型进行覆盖,例如 defaultblocks_social、defaultblocks_weeks 和 defaultblocks_topics。 |
| disablemycourses | B | 此设置将防止在用户登录时显示“我的课程”页面。主页将始终显示相同的(未登录)视图。 |
| disableonclickaddoninstall | B | 禁用插件安装功能,并从服务器管理用户界面中隐藏它。 |
| disablestatsprocessing | B | 阻止统计处理并隐藏 GUI。 |
| disableupdateautodeploy | B | 禁用更新部署。当通过 Git 检出进行部署时很有用。 |
| disableupdatenotifications | B | 禁用更新通知。当通过 Git 检出进行部署时很有用。 |
| 名称 | 类型 | 描述 |
| disableusercreationonrestore | B | 在恢复课程时完全禁用用户创建。启用此设置会导致在尝试恢复需要创建用户的课程时,恢复过程停止。 |
| divertallemailsto | S | 将所有发出的电子邮件重定向到此地址以测试和调试电子邮件功能。 |
| emailconnectionerrorsto | S | 将数据库连接错误发送给某人。如果 Moodle 无法连接到数据库,请将通知发送到此地址的电子邮件。 |
| expectedcronfrequency | N | Moodle 检查 cron 是否频繁运行。如果 cron 运行之间的时间超过此值(以秒为单位),则在管理页面上会显示警告。此设置仅控制是否显示警告;没有其他效果。 |
| filedir | S | 你可以指定 dataroot 的替代路径。 |
| filelifetime | N | 文件在缓存中保留的时间(默认为 86400,即 24 小时)。如果你担心学生被服务到过时的上传文件版本,请减少此值。 |
| filepermissions | 与默认参数中的directorypermissions相同,但用于创建的文件。 |
|
| forced_plugin_settings | A | 插件设置必须指定为一个数组数组:array('plugin1' => array('param1' => 'value1', ('param2' => 'value2', …), ('plugin2' => array('param1' => 'value1', ('param2' => 'value2', …), …); |
| forcedefaultmymoodle | B | 如果设置,则 My Moodle 页面不能由用户自定义。 |
| forcefirstnameforcelastname | S | 为了匿名化所有学生的用户名。如果设置,则所有非教师将始终看到每个人的此信息。 |
| gradeoverhundredprocentmax | N | 如果unlimitedgrades被设置,可以指定一个最大值(1 = 100%,默认 = 10)。 |
| handlebounces | B | 用于处理邮件退信。与minbounces和bounceratio一起使用。 |
| httpswwwroot | S | SSL 页面的wwwroot。 |
| 名称 | 类型 | 描述 |
| includeuserpasswordsinbackup | B | 允许在备份文件中包含用户密码。只有在你能够保证所有备份文件保持私密的情况下使用,因为密码散列可以是未加密的。 |
| keeptempdirectoriesonbackup | B | 在备份和恢复过程中保留临时目录,直到过程结束时才删除。有关详细信息,请参阅第四章**,批量管理课程和注册中的批量管理课程部分。 |
| langlocalroot | S | $CFG->dataroot/lang的替代目录。 |
| localcachedir | S | 可以指定不同的缓存和临时目录。对于普通 Web 服务器,使用本地(快速)文件系统。服务器集群必须使用共享文件系统作为cachedir。localcachedir是为服务器集群设计的;集群节点不需要共享。这些目录不能通过 Web 访问。 |
| maildomain | S | 您的电子邮件域名。 |
| mailprefix | S | mdl+是 Exim 和 Postfix 的分隔符,mdl-是 qmail 的分隔符。 |
| minbounces | N | 默认为10。有关详细信息,请参阅$CFG->handlebounces。 |
| mnetkeylifetime | N | 网络密钥到期前的天数。有关详细信息,请参阅第十九章**,设置 Moodle 网络。 |
| noemailever | B | 当在测试服务器上处理生产数据时,不应向真实用户发送任何电子邮件或其他消息。 |
| opensslcnf | S | openssl.cnf 文件的位置。 |
| passwordsaltmain | S | 添加到 md5 密码散列中的随机字符串。有关详细信息,请参阅第十三章**,确保 Moodle 安全。 |
| pdfexportfont | S | 导出 PDF 文件中使用的字体。在生成 PDF 时,Moodle 将字体子集嵌入到 PDF 文件中,以便在广泛的设备上可读(默认为freesans)。 |
| preferlinegraphs | B | 此设置将使某些图表(例如,用户日志)使用线条而不是条形图。 |
| preventscheduledtaskchanges | B | 禁止在站点管理 | 服务器 | 计划任务中编辑任务。 |
| reverseproxy | B | 在设置高级反向代理负载均衡配置和端口转发时启用。 |
| showcrondebugging | B | 将调试信息添加到 cron 输出。 |
| showcronsql | B | 在 cron 执行期间显示执行的 SQL 查询。 |
| 名称 | 类型 | 描述 |
| skiplangupgrade | B | 禁用自动语言更新,并允许翻译者(语言包维护者)保留其moodledata/lang/*以手动更新。 |
| sslproxy | B | 在出于性能原因使用外部 SSL 设备时启用。 |
| supportuserid | N | 支持的电子邮件可以重定向到另一个用户。 |
| tagsort | S | 按指定字段对标签云中的标签进行排序;默认为name。 |
| themedir | S | 在$CFG->dirroot之外添加额外的主题目录。 |
| themeorder | A | 从最高到最低的主题优先级。默认为array('course', 'category', 'session', '``user', 'site')。 |
| themerev | B | 防止主题缓存。 |
| tracksessionip | B | Moodle 将跟踪当前用户的 IP 地址,以确保在会话期间没有发生变化。这将防止通过 XSS 攻击劫持会话的可能性,但可能会破坏使用频繁更改代理的用户。 |
| trashdir | S | $CFG->dirroot/trashdir的替代位置。 |
| undeletableblocktypes | A | 此列表中的块受到删除保护,例如,navigation,settings。 |
| uninstallclionly | B | 这将阻止管理员从管理用户界面卸载插件,并强制仅通过命令行工具(位于admin/cli/plugin_uninstall.php)卸载插件。 |
| upgradekey | S | 升级过程中的密码保护。有关详细信息,请参阅docs.moodle.org/en/Upgrade_key。 |
| upgraderunning | B | 假装 Moodle 更新正在运行。 |
| upgradeshowsql | B | 在升级期间显示执行的 SQL 查询。 |
| usezipbackups | B | 在备份中使用 ZIP 压缩而不是默认的 TGZ。 |
| wordlist | S | Moodle 的单词审查过滤器使用的单词列表。 |


浙公网安备 33010602011771号