2.4.0.beta3 中的新功能
允许自定义 robots.txt
此功能允许管理员在 /admin/customize/robots 处自定义/覆盖 robots.txt 文件的内容。该页面未链接到 UI 中的任何位置——管理员必须手动输入 URL 才能访问该页面:
批量邀请时每分钟最多发送 200 封电子邮件
注意: invite.via_email 已弃用,改用 invite.emailed_status。
此提交在 invites 表中添加了一个新列 emailed_status,用于跟踪电子邮件发送状态。
0 - 不需要
1 - 待处理
2 - 批量待处理
3 - 发送中
4 - 已发送
- 对于普通电子邮件邀请,创建邀请记录时
emailed_status设置为“待处理”。 - 发送批量邀请时,创建邀请记录时
emailed_status设置为“批量待处理”。 - 对于生成链接的邀请,创建邀请记录时
emailed_status设置为“不需要”。 - 当邀请邮件进入队列时,
emailed_status更新为“发送中”。 - 一旦通过
InviteEmail作业发送了电子邮件,邀请的emailed_status将更新为“已发送”。
兑换邀请时的外部认证
此功能(启用后)将允许 invite_only 站点在兑换邀请之前要求外部认证。
- 创建了隐藏站点设置以切换此功能
- 允许在禁用本地登录的情况下发送邀请
- 邀请表单中添加了 OAuth 按钮
- 要求 OAuth 电子邮件地址与邀请电子邮件地址匹配
- 如果 OAuth 认证失败,则阻止兑换邀请
公开私信时允许选择分类
此前默认会归类为 未分类,这对某些论坛来说并不理想。现在,工作人员可以立即决定将私信移至哪个分类。
允许查看可审核队列帖子的原始电子邮件
如果帖子通过电子邮件到达但需要审核,我们现在会显示一个图标,点击即可查看电子邮件的原始内容。
如果 Discourse 的电子邮件解析器表现异常,且审核帖子的用户希望了解批准/拒绝帖子之前的原始内容,这将非常有用。
关注词改进
此版本中添加了新功能。
有两个新按钮。第一个允许管理员按操作下载关注词为 .txt 文件,第二个按钮清除每个操作(例如屏蔽、标记等)的所有已删除词。此外,当帖子因包含一个或多个屏蔽词而被拒绝时,错误消息现在会列出帖子中包含的所有屏蔽词。
请注意,此新功能还将导入关注词的文件格式从 .csv 更改为 .txt,因此与导出关注词时的文件扩展名不一致。
自定义 HTML 电子邮件
此功能添加了使用自定义 HTML 模板和可选 CSS 样式来定制所有电子邮件 HTML 部分的能力。CSS 将被解析并转换为内联样式,因为电子邮件客户端对 CSS 的支持较差。在编写自定义 HTML 和 CSS 时,请注意电子邮件客户端的支持情况。保持自定义非常简单。
自定义可以在 管理 > 自定义 > 电子邮件样式 中添加和编辑。
由于摘要电子邮件已经经过大量样式化,因此有一个设置可以禁用摘要电子邮件的自定义样式,名为 apply custom styles to digest,位于 管理 > 设置 > 电子邮件 中。
作为这项工作的一部分,所有电子邮件现在都能正确渲染 RTL 区域设置。
在关于页面列出分类版主
这是针对 Category Group Review/Moderation 功能的新更新。从现在开始,分类版主将与工作人员一起显示在站点的“关于”页面上。
添加对组成员可见性级别的支持 & 成员被接受加入群组时发送通知
这是群组可见性管理的另一个补充。现在有 5 个可见性级别(类似于群组可见性):
- 公开(默认)
- 已登录用户
- 仅限成员
- 工作人员
- 所有者
管理员和群组所有者始终可以查看群组成员。
此外,从现在开始,当用户被接受加入群组时,将向其发送通知。
通过 JavaScript API 在远程站点嵌入主题列表
此功能添加了对 <d-topics-list> 标签的支持,您可以将其嵌入到您的站点中,该标签将被渲染为 Discourse 主题列表。标签上的任何属性都将作为过滤器传递。例如:
<d-topics-list discourse-url="URL" category="1234"> 将过滤到分类 1234。
要使用此功能,请启用 embed topics list 站点设置。然后,在您想要嵌入的站点上,包含以下 JavaScript:
<script src="http://URL/javascripts/embed-topics.js"></script>
其中 URL 是您的 Discourse 论坛的 URL。
然后在您的 HTML 文档中包含 <d-topics-list discourse-url="URL"> 标签,它将被替换为主题列表。
详细信息请参阅 Embedding a list of Discourse Topics in another site
为用户通知添加 Webhook
如果启用,每当创建用户通知时,这将触发一个 Webhook。根据您的论坛,这可能是大量数据,因此应谨慎使用,因为它包含了所有用户在其动态中看到的所有内容。
将 theme_uploads 视为 JavaScript 中的设置,并允许主题上传 js 文件作为资源
这是对主题的其他改进。第一个改进允许主题和组件访问主题资源。这意味着在主题 js 中,您现在可以通过以下方式获取资源的 URL:
settings.theme_uploads.name
第二个改进有助于解锁主题延迟加载较大 js 负载的能力。此更改是安全的,因为主题本来就可以包含内联 js。
与 iOS/Android 原生应用链接的站点设置 & 将 PWA 安装提示整合到 Discourse UI 中
在此版本中,Android 和 iOS 应用也有新功能。
现在有两个新的站点设置,用于通过 apple-app-site-association 端点添加对 iOS 通用链接的支持,以及通过 .well-known/assetlinks.json 端点添加对 Google 数字资产链接的支持。
此外,我们将阻止原生安装“迷你信息”栏出现,捕获弹出该栏的事件,并将其延迟到用户满足我们的条件为止,目前该条件是信任级别 1。
如果事件发生且用户满足我们的条件,我们将显示一个 Discourse 警报横幅,向用户提议安装。横幅的关闭会被记录,因此用户在同一设备上不再受到打扰。
使用 Discord 登录
我们将 discourse-plugin-discord-auth 的功能添加到了核心。当核心更新时,该插件将自动禁用,参见:discourse/discourse-plugin-discord-auth@fd08678?w=1。
有关设置说明,请访问 Configure Discord Login for Discourse
提高匿名缓存性能
这里有 2 个新功能以提高性能:
-
DISCOURSE_COMPRESS_ANON_CACHE (true|false,默认为 false):允许您选择压缩 Redis 中的匿名缓存正文条目,对于 Redis 位于与 Web 服务器分离的高负载站点可能有用。
-
DISCOURSE_ANON_CACHE_STORE_THRESHOLD(默认为 2),仅当观察到条目超过 N 次时才将其推入 Redis。这避免了爬虫遍历大量主题并将它们全部存储在 Redis 中却从未被使用的情况。我们默认的匿名缓存时间对于主题仅为 60 秒。匿名缓存的存在是为了避免“Slashdot”效应,即单个主题在一分钟内被数百人访问。




