# Discourse 会员申请

**URL:** https://meta.discourse.org/t/discourse-member-application/399190
**Category:** Plugin
**Created:** [2026年三月24日 23:35 UTC](https://meta.discourse.org/t/discourse-member-application/399190 "2026-03-24T23:35:06Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![R23D\_Printing](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/r23d_printing/32/544902_2.png) [@R23D\_Printing](https://meta.discourse.org/u/R23D_Printing)
#### Post date: [2026年三月24日 23:35 UTC](https://meta.discourse.org/t/discourse-member-application/399190/1 "2026-03-24T23:35:06Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **摘要** | **Discourse 成员申请** 插件允许您在潜在成员加入您的 Discourse 社区之前，为其运行结构化的申请流程。 |
| 🛠 | **仓库链接** | [R23DPrinting-group / discourse-member-application · GitLab](https://gitlab.com/r23dprinting-group/discourse-member-application) |
| 📖 | **安装指南** | [如何在 Discourse 中安装插件](https://meta.discourse.org/t/install-plugins-in-discourse/19157) |

  

# discourse-member-application — 面向私有社区的预邀请申请系统

**discourse-member-application** 允许您在潜在成员加入您的 Discourse 社区之前，为其运行结构化的申请流程。申请人可在 `/apply` 页面填写可自定义的公开表单，管理员审核提交内容并批准或拒绝，获批的申请人将自动收到私密邀请链接。

🔗 **GitLab:** [R23DPrinting-group / discourse-member-application · GitLab](https://gitlab.com/r23dprinting-group/discourse-member-application)

* * *

## 背景故事

我运营着一个使用 Discourse 仅限邀请模式的私有社区。我们曾手动管理成员申请——使用 Google 表单、电子表格，并手动复制粘贴邀请链接。这种方法虽然可行，但无法扩展，且感觉与社区本身脱节。

我曾寻找能够处理预邀请申请的 Discourse 插件，但未能找到合适的方案，因此我决定自己开发。

* * *

## 演示

[![](https://global.discourse-cdn.com/meta/original/4X/3/7/7/377ebc7ab46b47f565de226746ae82fe88380033.jpeg "Discourse Member Application Plugin Overview") ](https://www.youtube.com/watch?v=CtWZVzLyI20)

* * *

## 功能特性

**📋 可自定义的申请表单**  
表单完全通过管理面板中的“字段”选项卡构建，无需编写代码。支持的字段类型包括：文本、文本域、是/否、单选按钮、复选框组和复选框。字段支持标签、提示、必填/可选、启用/禁用以及条件显示（仅当另一字段具有特定值时显示该字段）。

**🔍 管理员仪表板**  
通过专用的插件页面审核和管理所有申请。可按状态（待处理/已批准/已拒绝/已兑换）筛选，按邮箱或用户名搜索，并对大量列表进行分页。查看完整的申请详情，添加私密管理员备注，并单独或批量批准/拒绝申请。

**✅ 审批流程**  
批准申请会生成一个单次使用的 Discourse 邀请链接，并通过邮件发送给申请人。拒绝申请会发送可自定义的拒绝邮件，并可选择附带反馈。当申请人兑换邀请并创建账户后，申请状态将自动更新为“已兑换”。获批成员可选择自动添加到指定的 Discourse 群组。

**📊 数据分析**  
“数据分析”选项卡显示汇总统计（总申请数、批准率、平均审核时间）、12 周提交与批准趋势图表，以及从“已提交”到“已批准”再到“已兑换”的转化漏斗。

**🔔 管理员通知**  
当有新申请提交时，系统会向配置的用户名（若留空则通知所有管理员）发送私密消息。

**🎨 可配置的用户体验**

- 表单顶部的介绍文本（支持 Markdown）
- 提交后在 `/apply/success` 页面显示的成功页面，包含可配置的消息（支持 Markdown）
- 登录页面和需要登录的首页上显示“申请加入”按钮（可开关）
- 申请过期功能——在可配置的天数后自动拒绝待处理申请

**📧 可编辑的邮件模板**  
提交确认邮件和拒绝邮件均可通过 管理 → 自定义 → 邮件模板 进行编辑，无需修改代码。

**🔒 安全性**  
速率限制（每个 IP 每小时最多 5 次提交）、重复检测（阻止使用待处理/已批准的邮箱或用户名再次提交，并阻止已注册的邮箱/用户名）、以及单次使用邀请。

* * *

## 配置

### 安装

将以下内容添加到您的 `/var/discourse/containers/app.yml`：

```yaml
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://gitlab.com/r23dprinting-group/discourse-member-application.git

```

然后重新构建：

```bash
cd /var/discourse && ./launcher rebuild app

```

### 设置您的表单

安装完成后，前往 **管理 → 插件 → 成员申请 → 字段** 以构建您的申请表单。

该插件默认包含以下字段（均可编辑或删除）：

1. 期望的用户名
2. 请简单介绍一下自己
3. 您是如何了解到我们的？
4. 您目前是否属于其他类似的在线社区？（是/否）
5. 如果是，是哪些？（条件字段——仅当上述选择“是”时显示）
6. 供应商披露（复选框组）
7. 诚实确认（复选框——系统字段，不可删除）

使用 **添加字段** 按钮创建新字段。使用上下箭头重新排序。若要设置条件字段，请编辑该字段并使用“仅当以下情况时显示”部分选择父字段和触发值。

### 工作流程

1. 潜在成员访问您的网站并点击 **申请加入** （或直接导航至 `/apply`）
2. 他们填写表单并提交——无需账户
3. 管理员收到私密消息通知
4. 管理员在 **管理 → 插件 → 成员申请 → 申请** 中审核申请
5. 管理员批准 → 申请人收到包含单次使用链接的邀请邮件
6. 申请人兑换邀请并创建账户，申请状态更新为 **已兑换**

* * *

## 设置项

| 名称 | 描述 |
| --- | --- |
| `member_application_enabled` | 启用或禁用 `/apply` 处的申请表单 |
| `member_application_notify_usernames` | 以逗号分隔的用户名列表，用于在新提交时通过私密消息通知。留空则通知所有管理员。 |
| `member_application_invite_group` | 批准时添加到邀请的群组名称（留空则跳过） |
| `member_application_expiry_days` | 在此天数后自动拒绝待处理申请（0 表示永不过期） |
| `member_application_expiry_notify` | 自动过期申请时发送拒绝邮件 |
| `member_application_show_apply_button` | 在登录页面和需要登录的首页显示“申请加入”按钮 |
| `member_application_apply_button_text` | “申请加入”按钮的标签（默认：“申请加入”） |
| `member_application_intro_text` | 显示在申请表单顶部的介绍文本。支持 Markdown。留空则隐藏。 |
| `member_application_success_message` | 提交后在 `/apply/success` 页面显示的消息。支持 Markdown。 |

* * *

## 注意事项

- 与社区无关——所有默认字段文本均可通过“字段”选项卡进行配置
- 兼容 Discourse 的 `login_required` / 仅限邀请模式
- 采用 MIT 许可证
- 已在 Discourse 2026.3.0 版本上测试

欢迎在 GitLab 上提交问题、PR 和功能请求。

🔗 [R23DPrinting-group / discourse-member-application · GitLab](https://gitlab.com/r23dprinting-group/discourse-member-application)

---

_[View the full topic](https://meta.discourse.org/t/discourse-member-application/399190)._
