关于使用插件、主题和主题组件扩展 Discourse、操作核心代码以及使用 Discourse API 的文档。
简介
开发环境
- Dev Container:使用 Dev Container 开发 Discourse
- GitHub Codespaces:在 GitHub Codespaces 上开发 Discourse
- Docker 设置:使用 Docker 安装 Discourse 以进行开发
- macOS 设置:在 macOS 上安装 Discourse 以进行开发
- Ubuntu/Debian 设置:在 Ubuntu 或 Debian 上安装 Discourse 以进行开发
- Windows 设置:在 Windows 上安装 Discourse 以进行开发
- 非 Docker 插件:在非 Docker 开发环境中安装插件
- 本地设置:如何设置本地 Discourse 开发环境?
- 多站点设置:设置多站点开发环境
- Fedora 设置:在 Fedora Linux 上设置 Discourse 开发环境
代码与内部机制
- Ember 组件:向 Discourse 添加 Ember 组件
- 代码检查和格式化:在提交前自动检查和格式化代码
- 验收测试:为 Discourse 中的 Ember 代码编写验收测试和组件测试
- 运行测试套件:如何运行 Discourse 核心、插件和主题的 QUnit 测试套件
- 版本兼容性:为旧版 Discourse 安装固定插件和主题版本 (d-compat 分支)
- Ember 对象所有权:Ember 对象所有权 (getOwner、服务注入等)
- JS 性能:使用 Google 的 ‘tachometer’ 测量 Discourse 中的 JS 性能变化
- 使用 GitHub Actions 进行 CI:使用 GitHub Actions 设置持续集成
- Markdown 扩展:Markdown 扩展开发者指南
- 转换模态框:将模态框从旧版控制器转换为新的 DModal 组件 API
- DModal API:使用 DModal API 在 Discourse 中渲染模态窗口(又称弹出框/对话框)
- JS API:使用 JS API
- 插件出口连接器:从主题或插件中使用插件出口连接器
- modifyClass:使用 modifyClass 更改核心行为
- 创建路由:在 Discourse 中创建路由并显示数据
- 身份验证方法:向 Discourse 添加新的“托管”身份验证方法
- ActiveRecord 模型的意外序列化:防止 ActiveRecord 模型的意外序列化
- 覆盖模板:(不推荐)从主题或插件中覆盖 Discourse 模板
- 服务对象:在 Discourse 中使用服务对象
- 系统规格:为 Discourse 用户界面编写端到端系统规格
- FormKit:用于渲染表单的 Discourse 工具包。
- AppEvents 触发器:AppEvents 触发器参考
- 转换器:使用转换器自定义客户端值和行为
- 主题列表自定义:自定义主题列表
- CSS 指南:使用 BEM 的 CSS 类指南
- JS 类型提示与验证:JavaScript 类型提示与验证 (typescript)
- 设备设计:针对不同设备(触摸和悬停)的设计
- 响应式宽度设计:针对响应式宽度的设计(断点、视口和容器)
- 手势原语:拖拽、调整大小和手势原语
插件
- 基础插件:开发 Discourse 插件 - 第 1 部分 - 创建一个基础插件
- 插件出口:开发 Discourse 插件 - 第 2 部分 - 连接到插件出口
- 站点设置:开发 Discourse 插件 - 第 3 部分 - 添加自定义站点设置
- Git 设置:开发 Discourse 插件 - 第 4 部分 - 设置 git
- 管理界面:开发 Discourse 插件 - 第 5 部分 - 添加管理界面
- 验收测试:开发 Discourse 插件 - 第 6 部分 - 添加验收测试
- 发布你的插件:开发 Discourse 插件 - 第 7 部分 - 发布你的插件
- 新语言环境:从插件添加新的语言环境
- 聊天集成:向 discourse-chat-integration 添加新的提供商
- markdown-it 扩展:将 markdown-it 扩展重新打包为 Discourse 插件
- Rails 自动加载:为 Rails 自动加载结构化插件
主题与组件
- 开发主题:开发 Discourse 主题和主题组件
- 快速参考:主题开发者快速参考指南
- 设计师指南:Discourse 主题入门设计师指南
- 主题创建器:使用 Theme Creator 和 Theme CLI 入门
- 主题 CLI:安装 Discourse Theme CLI 控制台应用程序以帮助你构建主题
- 主题结构:主题和主题组件的结构
- 多个 JS 文件:将主题 JavaScript 拆分为多个文件
- 多个 SCSS 文件:将主题 SCSS 拆分为多个文件
- 主题设置:向你的 Discourse 主题添加设置
- 主题设置对象:主题设置的对象类型
- 迁移设置:迁移 Discourse 主题设置
- 主题元数据:为主题添加元数据和屏幕截图
- 核心变量:在主题中使用 Discourse 核心变量
- 可本地化字符串:为主题和主题组件添加可本地化字符串
- E2E 测试:针对主题和主题组件的端到端系统测试
- 最小化维护:最小化主题自定义的维护工作
- 字体大小:更改主题中的字体大小
- 包含资产:在主题和组件中包含资产(例如图像、字体)
- 自定义图标:在主题中用自定义图标替换 Discourse 的默认 SVG 图标
- 深色模式:更新主题和插件以支持自动深色模式
- 主题修饰符:主题修饰符:简要介绍
- 伪元素:使用 CSS 伪元素在网站的任何位置插入文本或图像
- 字体组件:创建和共享字体主题组件
- Highlight.JS 语言:通过主题组件为 Highlight.JS 安装新语言
- 主页内容:添加仅在主页上显示的自定义内容
- 消息格式:用于本地化的消息格式支持
- 全局图标更改:全局更改图标
- 替代图标:替代图标
- Wiki 帖子样式:更改 Wiki 帖子的样式
- 配色方案:创建和共享配色方案
- 导航菜单:使用
navigation_menu查询参数预览侧边栏或其他选项 - 帖子内容样式:使用你自己的样式自定义帖子内容
- 主题屏幕截图:为 Discourse 主题添加预览屏幕截图
- 可主题化的站点设置:使用主题控制站点设置
通用指南
- 移动应用白标化:在决定对 Discourse 移动应用进行白标化之前需要考虑的事项
- 自定义自动化:创建自定义自动化
- 公共数据转储:Discourse 公共数据转储
- AI 评估:运行 Discourse AI 评估
主题开发教程
- 1 - 简介:主题开发者教程:1. 简介
- 2 - 远程主题:主题开发者教程:2. 创建远程主题
- 3 - CSS:主题开发者教程:3. 主题中的 CSS
- 4 - 出口:主题开发者教程:4. 使用出口插入和替换内容
- 5 - 组件:主题开发者教程:5. 构建和使用组件
- 6 - JS API:主题开发者教程:6. 使用 JS API
- 7 - 结论:主题开发者教程:7. 总结