条件用户字段

用例

我们正在努力改善社区的入职体验。自然而然地,我们希望利用我们所了解的用户信息,根据他们提供给我们的信息来执行/显示某些操作。

今天,我们的用户通过 OIDC 集成开始他们的账户创建,通过创建我们公司的账户。他们在 OIDC 中提供电子邮件、姓名和用户名,然后 OIDC 会将他们重定向回 Discourse。

问题

我们现在希望让他们填写一些额外的用户字段——这很好,因为 Discourse 提供了这个功能!不幸的是,我们无法根据先前字段的响应来显示字段。例如,我们想问“哪个角色最能描述您?”选项包括 developeradministratoranalyst

  • 如果他们选择 developer,我当然想问他们偏好的编程语言是什么。我之后也会将他们添加到开发人员用户组。
  • 如果他们选择 analyst,我想问他们一系列不同的问题,并将他们添加到不同的用户组。

解决方案建议

如今,网络上的许多表单选项都提供条件表单字段(例如,您从哪里听说我们?如果选择了“其他”,则会出现一个附加字段来说明原因)。如果您能像处理新主题表单模板一样,开始朝着类似(但更强大)的方向发展,那就太好了,但需要增加一个能够依赖于另一个字段 ID 的功能,特别是该字段的输入。例如,它可能看起来像这样:

- type: dropdown
  id: user-type
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "Choose your role..."
    label: "Which option best describes your job"
  validations:
    required: true
- type: dropdown
  id: developer-type-programming-language
  depends: user-type
    choices:
      - "Developer"
  choices:
    - "Developer"
    - "Application Administrator"
    - "Analyst"
  attributes:
    none_label: "Preferred programming language..."
    label: "What is the primary programming language used in your role?"
  validations:
    required: true

在此示例中,所有用户都会被问到第一个问题。如果用户从下拉列表中选择 Developer,那么表单上会出现第二个问题,询问他们偏好的编程语言。

这种条件字段改进可以用于用户入职流程以及最初设计的新主题的地方。

5 个赞

您可以查看 https://github.com/discourse/discourse-authentication-validations,它实现了您想要的功能,只是仅限于用户注册页面。将其应用于用户编辑首选项页面的字段似乎并不简单。

但您是在请求一项功能,而不是在寻找解决眼前问题的方案。

6 个赞

听起来很有希望——希望能看到更多相关的文档。

更多信息,请参阅:url to meta topic

看起来意图是有的。

1 个赞

恐怕这就是全部了。

这是来自 GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins 的样板代码。

2 个赞

该插件实际上非常直观。

底部的复选框添加了身份验证选项。

然后填充将激活下一个用户自定义字段的触发器响应。在我的例子中,它是耳机数量大于无。

填充后,然后定位您想要显示的自定义用户字段。在我的示例中,如果数量为 1-6+,用户将被提示输入主和次头显。

如果将其扩展到实验性的表单模板,那将非常棒。

5 个赞

它已经在我的待办事项列表上有一段时间了……我这周一定会加上去的 :slight_smile:

3 个赞

以为我已经写好了这个…… :sweat_smile:

我将用 meta 链接更新仓库。

1 个赞

哎呀!抱歉,我也忘了。

是否可以在用户个人资料中设置这些条件,而不是仅在创建帐户页面上设置?(我很确定我理解它只在帐户创建页面上起作用——我有一个人想让用户回去输入内容,并强制执行这些规则。)

1 个赞

是的,这是该插件目前唯一受影响的位置。

让我确保我们理解一致:

您是希望能够通过 /preferences/profile 更新公开的自定义用户字段,并且我们应用与创建账户模态框相同的条件隐藏/显示逻辑吗?

例如,如果“自定义字段 1”的值为“显示自定义字段 2”,则显示第二个自定义字段?

2 个赞

是的。我希望所有 custom_user_fields(即“注册后可编辑”)都能在 /preferences/profile 页面上应用相同的规则。

我认为是这样。在创建账户模态框中生效的规则将在个人资料页面中生效。

3 个赞

我认为这将是一个很好的补充。将条件字段逻辑移到个人资料页面应该会很容易。

这可以作为 pr-welcome 的一个好例子,但我也可以在接下来的一个月左右看看。

4 个赞

嗯,也许对你来说是这样!我试了一下,很快就迷失了方向。看起来应该和把一些东西复制到首选项页面一样简单,但具体是哪些东西就不是我能轻易理解的了。

那就太好了!

4 个赞