主题组件,如果用户属于某个特定组,则隐藏主题

您希望完成什么?

我想隐藏“最新”页面上的主题,不让属于某个“不良”用户组的用户看到。我认为这可以通过一个主题组件来实现,但我愿意听取其他建议。这是一个一次性的用例,我不需要一个用户界面来编辑参数。

这里有一个类似的工作,也许可以作为起点。该方法是使用 api.modifyClass 在主题(“最新”页面上的 <tr>)上添加一个类,然后用几行 CSS 将该类设置为 display: none。我假设可以在 modifyClass 中获取用户,并在用户属于“不良”用户组时添加该类。

(我意识到这不会影响他们的权限,他们仍然可以在“分类”或“搜索”视图中看到该主题,仍然会收到电子邮件,他们可以发现我的技巧并编辑他们本地的 CSS 等。我只是想制造一些麻烦,让他们采取行动。考虑到所有限制,我认为这种方法会奏效。)

您希望何时完成?

未来几周。

您能为这项任务提供多少美元预算?

价格面议。

1 个赞

您希望 /latest 对这些用户为空?还是只隐藏某些主题?
目的是惹恼他们?(因为他们惹恼了所有人?)。我只是想知道是否有更好的方法来惹恼他们。

2 个赞

我忘了提,我们仍然希望允许他们“最新”中看到一个主题——更新的服务条款。

我也不太喜欢,但这是我能想到的最好的办法。目标是让所有用户签署更新的服务条款,并给予比平时更高的重要性。在 How to force existing users to accept ToS 有讨论过,也许 Discourse Policy 可以提供帮助。但 Policy 并不强制执行任何操作,而且鉴于新服务条款的重要性,我们希望获得比蓝色气泡更多的东西来提醒用户。几年前我们开发了一个插件,在用户接受某项政策时将他们添加到某个组,这在某些方面是有效的,但我不知道如何将其用于此。

我们已经有一套相当复杂的组和类别,所以我们不能简单地将每个类别的权限从“所有人”更改为“已接受服务条款者”。如果类别权限支持布尔逻辑,也许我们可以更改权限,只允许同时属于“高级用户组”和“已接受服务条款者”的用户。但它不支持这一点。

我对于如何提醒他们没有强烈意见。如果 Discourse Policy 有任何内置的强制执行机制,我会使用它。但在这个案例中,我们需要比蓝色气泡更多的东西。

我还短暂地考虑过,如果他们不是“已接受服务条款者”组的成员,就用永久链接重定向他们。如果我们能将用户 ID 或用户名作为查询参数附加到永久链接 URL,这仍然是一个选项。如果我们将他们重定向到 Docusign 或其他类似服务,我可以设置一个 webhook 将他们添加到“已接受服务条款者”组,这样他们就不会再被重定向了。这听起来是个更好的计划吗?

1 个赞

也许可以看看现有的“Gate”组件并调整它们的条件?这些组件有相当烦人的阻止器,并以简单明了的方式告知用户预期内容。

3 个赞

您或许可以使用 Discourse Custom Wizard 插件中的某些功能引导用户接受服务条款:

https://discourse.pluginmanager.org/t/wizard-settings/226

绝对可以根据组成员身份设置条件,并从向导的输出中更改组成员身份。

1 个赞

一个允许为类别设置复杂权限的插件在很多情况下都很有用。也许这是解决该问题最有效利用开发时间的方式?

也许可以使用文本设置中的 slug 公式:
例如:(#tos-acceptor 或 #direct-concern)和 #premium-group

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.