关于通过插件、主题和主题组件扩展 Discourse、使用核心代码以及使用 Discourse API 的文档。
简介
开发环境
- Dev 容器:使用 Dev 容器开发 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 主题指南
- 主题创建器:开始使用主题创建器和主题 CLI
- 主题 CLI:安装 Discourse 主题 CLI 控制台应用程序以帮助您构建主题
- 主题结构:主题和主题组件的结构
- 多个 JS 文件:将主题 JavaScript 拆分为多个文件
- 多个 SCSS 文件:将主题 SCSS 拆分为多个文件
- 主题设置:为您的 Discourse 主题添加设置
- 主题设置对象类型:主题设置的对象类型
- 迁移设置:迁移 Discourse 主题设置
- 主题元数据:为主题添加元数据和截图
- 核心变量:在主题中使用 Discourse 核心变量
- 可本地化字符串:为主题和主题组件添加可本地化字符串
- 端到端测试:主题和主题组件的端到端系统测试
- 减少维护:减少主题自定义的维护工作
- 字体大小:更改主题中的字体大小
- 包含资源:在主题和组件中包含资源(例如图片、字体)
- 自定义图标:在主题中用自定义图标替换 Discourse 的默认 SVG 图标
- 深色模式:更新主题和插件以支持自动深色模式
- 主题修饰符:主题修饰符:简要介绍
- 伪元素:使用 CSS 伪元素在站点任何位置插入文本或图片
- 字体组件:创建并分享字体主题组件
- Highlight.JS 语言:通过主题组件安装 Highlight.JS 的新语言
- 主页内容:添加仅显示在主页上的自定义内容
- 消息格式:本地化的消息格式支持
- 全局图标更改:全局更改图标
- 替代图标:替代图标
- 维基帖子样式:更改维基帖子的样式
- 配色方案:创建并分享配色方案
- 导航菜单:使用
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. 总结