这是否为用户自定义字段的使用场景?

我一直在尝试弄清楚如何让用户创建 子论坛,使其运作方式类似于 Slack 频道。

其中一个建议是使用标签。这样,用户就可以创建一个标签(或者我开发的应用程序通过 API 来创建),该标签的页面将充当子论坛的页面。

接下来的问题是,如何确保只有子论坛的成员才能在该子论坛中发帖。换句话说,只有该子论坛的成员才能将子论坛的标签关联到他们的帖子中。

有没有办法利用“用户自定义字段”来实现这一点?例如,以某种方式标记用户,使其被允许使用特定标签发帖?

我不太清楚“用户自定义字段”的具体用途,因此希望能进一步了解。

1 个赞

我认为标签本身不带有任何用户级别的权限。你或许可以检查一下分类

1 个赞

Discourse 使用群组(groups)和分类(categories)来控制内容访问权限。请查看本主题中的视频以了解详情:如何使用分类安全设置创建私密分类

[quote=“syl, post:2, topic:152808”]
我认为标签本身不包含任何用户级别的权限。你可能需要检查分类。[/quote]

[quote=“simon, post:3, topic:152808”]
Discourse 使用用户组和分类来控制内容访问权限。请查看本主题中的视频以了解详细信息:如何使用分类安全设置创建私密分类[/quote]

感谢各位的回复。我同意分类似乎是实现这一点的更简单方式。但问题是,这些将是用户可以大量创建的子论坛。数量可能达到数百甚至更多(子论坛是应用的关键部分,会随着用户基数的增长而扩展)。

有人告诉我,创建数百甚至数千个分类会带来很大问题,因此我应该寻找其他解决方案。你们有其他建议吗?我愿意开发一个与 API 交互的独立应用。我期望从 Discourse 获得的核心功能是出色的帖子、回复和标签功能。

你想创建的内容并非 Discourse 的设计目标。

你需要的是一个类似 Reddit 或 Discord 的平台,用户可以在此创建并“拥有”子版块或服务器,而你则保留对整个平台的控制权和变现能力。

Discourse 的目标恰恰相反:它旨在让每个子版块、服务器或公会成为独立的站点,拥有自己的数据,并运行在各自的 URL 下。

虽然你可以对开源项目进行大量修改,但我建议使用其他更贴近你需求的方案。

4 个赞

我理解这并非典型的使用场景,但我确实希望能在 Discourse 上实现这一功能,毕竟 Discourse 如此出色。目前我已经能实现相当接近的效果——通过 API 创建一个标签,然后将用户引导至该标签页,使其起到子论坛的作用。但我还缺少一个关键环节:限制哪些用户可以使用该标签发帖。

Discord 无法满足这些需求,因为其在应用集成方面存在限制。我也不太熟悉如何将 Reddit 与应用程序集成。

您是建议我实际上可以用 Reddit 实现这一功能,还是仅仅指我想要的功能类型类似于 Reddit?

无论如何,在我看来,Discourse 的主要优势在于它是一个论坛,而非聊天工具。而我正是需要这种类论坛的功能。我尚未发现其他能在此方面替代 Discourse 的方案,但我非常乐意听取任何建议。

这个关键功能不在我们的开发路线图之上,我们也没有计划添加它。

多年来,关于此问题已有大量讨论:

1 个赞

我看过那些帖子。这里的一个不同之处在于,我很乐意开发一个完全独立的应用程序,该应用随后与 Discourse API 交互,为用户提供创建子组的使用体验。因此,我可以在这款独立应用中自行创建子组、关联成员等。

但我仍然希望能够在我的应用所创建的子论坛页面上,继续使用 Discourse 的前端发帖功能(主要是创建主题、回复、链接到分类以及添加标签)。

有人告诉我,有一种方法可以将用户自定义字段与标签关联起来(或者类似的方式),以限制用户可发布的标签。

但我真正的期望正如我所提到的——我可以在我的应用端处理大部分子论坛的设置工作,但如果能继续使用 Discourse 的发帖功能,将为我节省大量时间。

感谢大家的回复。有人能提供一些用户自定义字段通常是如何使用的示例吗?

看起来我可以为每个有权限的用户添加一个与特定子版块(例如 ‘subforum123’)相关的自定义字段。然后,当用户访问子版块页面时,调用 API 检查该用户是否拥有所需的自定义字段。如果有,则允许其发帖;如果没有,则不允许,也许我只需要隐藏“新建主题”和“回复”按钮。

它们通常用于在注册时收集信息(如位置、职位等),并在个人资料卡片上显示。

4 个赞

也许你想做的是让用户能够创建自己的 Discourse 实例(例如 username.yoursite.com),该实例运行在支持多站点安装的架构上,并将你的“主”Discourse 站点作为用户子站点的 SSO 服务器。理论上,你可以开发一个插件,每当有新用户注册时,就自动创建一个新的 username.yoursite.com Discourse 站点。但可能并非每个用户都需要拥有自己的子论坛,因此你可能需要某种机制,允许他们自主创建自己的子站点。

我认为这已经接近你想要实现的目标了。

1 个赞

这确实越来越接近我的想法了(“子论坛”一直是目标)。谢谢。我会进一步研究多站点功能。

我原本以为,在多站点结构中允许用户创建自己的子站点,会比允许用户创建自己的类别消耗更多的资源。多站点能否支持数百个甚至更多的子站点?我想知道这对服务器的负担有多大,或者它是否并不比一个繁忙的单站点消耗更多资源?

1 个赞

确实如此,但它的优势在于可行

可以。我知道至少有一家公司运营着数百个甚至更多的子站点,使用了至少两套不同的插件,每月费用在 100 至 300 美元之间。其他服务商则按每个站点每月 20 美元收费。

如果还不清楚的话,你基本上是在搭建一家 Discourse 托管公司。

以运营几十个站点为例,你至少需要 4 到 16GB 的内存作为起步。

1 个赞

为确认一下,您的意思是该公司每月仅支付 100 至 300 美元来维护数百个子站点吗?(听起来您确实是这样说的——对于数百个子站点来说,这个金额相当低。)

1 个赞

我的意思是,那家公司(开发 Discourse 的公司)对每个您打算创建的站点收取 100 至 300 美元的费用。其他一些公司则按每月约 20 美元的标准收费(https://www.communiteq.com/pricing/);想必他们正从中获利。

要解决我提出的问题,恐怕至少需要上百小时,甚至可能更多。

编辑:不过,如果您只需要一个单站点的多站点系统,或许能在更短的时间内启动。

2 个赞

好的,明白了。谢谢告知。