关于 moodle5-theme
面向 Moodle 5.1.3 及以上版本的主题开发 Skill,帮助开发者创建或修改基于 Boost 的主题。它按任务提供参考指引,并覆盖 SCSS、Mustache 模板、设置和渲染器等开发环节。
主要功能
- 01新主题脚手架生成
- 02SCSS 与样式定制
- 03Mustache 模板覆盖
- 04管理设置与渲染器定制
- 05Bootstrap 5 迁移与缓存排查
适用场景
- 01从头搭建 Moodle 主题
- 02调整主题颜色和页面布局
- 03添加影响 SCSS 的管理设置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nicolasflores9/ skills --skill moodle5-theme安装后在 Claude Code 中输入/moodle5-theme确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/bootstrap5-migration.mddebugging.mdrenderers.mdscss-pipeline.mdsettings.mdstructure.mdtemplates.md详细介绍
Moodle 5 主题开发
用于创建和修改基于 Boost(Bootstrap 5.3)的 Moodle 5.1.3+ 主题的技能。
快速背景
Moodle 5.1+ 使用 Bootstrap 5.3,主题位于 public/theme/ 下,并会自动继承父主题的布局。SCSS 流水线分为三个阶段:pre-SCSS → main(预设)→ extra-SCSS。模板使用 Mustache,并支持 Moodle 专用辅助函数({{#str}}、{{#pix}}、{{#js}})。
工作流
1. 了解用户需求
生成代码前,请先确定:
- 新建还是修改现有主题? 如果是新建,请生成完整的脚手架。如果是修改现有主题,请询问主题名称(Frankenstyle 组件
theme_name)。 - 用户想修改什么? 样式/颜色(→ SCSS)、页面结构(→ 模板/布局)、管理员选项(→ 设置)、渲染行为(→ 渲染器)、图标/图片(→ pix_core/pix_plugins)。
- 主题名称:将在所有文件中使用的 Frankenstyle 标识符(
theme_mytheme)。
2. 查阅相应参考资料
根据修改类型,在生成代码前阅读对应的参考文件:
| 任务 | 参考文件 |
|---|---|
| 创建新主题(脚手架) | references/structure.md |
| 修改样式、颜色、SCSS | references/scss-pipeline.md |
| 覆盖 Mustache 模板 | references/templates.md |
| 添加/修改管理员设置 | references/settings.md |
| 自定义渲染器或输出 | references/renderers.md |
| 从 Bootstrap 4 迁移到 5 | references/bootstrap5-migration.md |
| 缓存问题或调试 | references/debugging.md |
只阅读与当前任务相关的文件。对于涉及多个方面的任务(例如,添加会影响 SCSS 的颜色设置),请阅读两份文件。
3. 生成可用代码
生成文件时,请遵循以下规则:
文件结构:所有主题都位于 public/theme/<name>/ 下。始终生成完整路径,让用户清楚每个文件应放置的位置。
必需文件(新建主题时):
version.php— 插件元数据config.php— 主题配置(继承、布局、SCSS 回调)lang/en/theme_<name>.php— 最少语言字符串lib.php— SCSS 回调和辅助函数
代码规范:
- 每个 PHP 文件都以
<?php开头,随后是defined('MOODLE_INTERNAL') || die();(以<?php require_once...开头的布局文件除外) - 渲染器类使用命名空间
theme_<name>\output - 语言字符串始终放在语言文件中,绝不硬编码
- 预设中的 SCSS 变量使用
!default;pre-SCSS 中不使用!default,以强制覆盖 - Mustache 模板包含 GPL 许可证声明模板和
@template注释
SCSS — 编译顺序: 顺序至关重要,所有生成的 SCSS 都必须遵循以下三个阶段:
prescsscallback— 覆盖 Bootstrap!default的变量$THEME->scss— 带有@import "moodle"的主预设extrascsscallback— 具有最高层叠优先级的最终规则
Mustache 模板 — 覆盖:
要覆盖核心或插件模板,主题中的路径必须为:
theme/<name>/templates/<component>/<template>.mustache
其中 <component> 是 Frankenstyle 名称:core、mod_quiz、block_myoverview 等。
设置 — 缓存失效: 每个会影响 CSS/SCSS 的设置都必须包含:
$setting->set_updatedcallback('theme_reset_all_caches');
4. Bootstrap 5.3 — 现代代码
所有生成的代码都必须使用 Bootstrap 5.3 语法:
- 逻辑类:
.ms-*、.me-*、.ps-*、.pe-*、.text-start、.text-end - 带
bs前缀的数据属性:data-bs-toggle、data-bs-target - 不使用 jQuery:直接导入 Bootstrap 模块
- 使用
.visually-hidden替代.sr-only
除非用户明确要求向后兼容,否则不要生成 Bootstrap 4 语法的代码。
5. 交付
生成完整、可正常使用的文件,并包含:
- 文件在 Moodle 安装目录中的确切放置路径
- 解释非显而易见部分的内联注释
- 适用时的安装后说明(清除缓存、递增版本号)
修改 SCSS 或模板时,提醒用户清除缓存:
php admin/cli/purge_caches.php --theme
# Or more specifically:
php admin/cli/build_theme_css.php --themes=<name> --verbose
交互示例
用户:“我想在主题设置中添加一个自定义颜色字段,用于更改页眉颜色”
流程:
- 阅读
references/settings.md和references/scss-pipeline.md - 在
settings.php中生成admin_setting_configcolourpicker设置项 - 在
lang/en/theme_<name>.php中添加语言字符串 - 在
lib.php的get_pre_scss()中将该设置映射到 SCSS 变量 - 在
scss/post.scss中创建 SCSS 规则,使用该变量设置页眉颜色 - 添加
set_updatedcallback('theme_reset_all_caches')