创建和配置自定义用户字段

我认为你可以使用 rails 控制台重新排序它们。我选择使用 ID 输入字段,因为输入名称时更容易出现拼写错误

ids_in_order = [3, 7, 8, 5, 1, 2]

ids_in_order.each_with_index do |id, index|
  UserField.find(id).update!(position: index)
end
1 个赞

这是“重新排序类别”窗口的样子。我猜如果 Discourse 中存在这个功能,也许也可以用于用户字段?

1 个赞

我不这么认为,但我最近编写了一个主题组件,它会隐藏用户卡片和个人资料页面上自定义字段的原始显示,然后再次渲染它们,可以选择使某些内容对 HTML 安全(他们正在通过 API 向用户无法编辑的自定义字段添加一些信息)。我认为可以使用相同的思路向自定义字段添加一个排序字段,以更改它们在卡片和/或个人资料上显示的顺序。

我认为您可以使用现有方法对用户字段进行重新排序。每次更改位置后都必须重新打开菜单,这有点不切实际。在移动到多个位置时,这会有些烦人。

但是,一个能让按钮始终可见的组件,或者顶部有一个用于“重新排序模式”的复选框使其在菜单外部可见,就可以改善这种体验了。

1 个赞

哦。真有趣。是的。哎呀。这比我的主意好多了。:rofl:

我有一个自定义字段,并已将其设置为可搜索。然而,在用户页面 /u 上,唯一的搜索框显示为“按用户名筛选”。当我搜索自定义字段的内容时,没有任何结果显示。

我可以在列表中看到这些值(我已在自定义器中启用了该列),因此可以确认这些值确实存在。

我哪里做错了?

奇怪的是,自定义字段的值是链接,例如 u?cards=no&name=Female&order=likes_received,点击后会针对 name 字段中的值执行搜索,但返回结果为空。

以下是该字段的偏好设置:

另外(不知这是否是一个线索),当我按该自定义字段列排序时,无论是升序还是降序,列表顶部总是会出现字段为空的Users(不同的用户)。只有少数用户在该字段中有内容,但我原本预期所有空值都应该在列表的顶部或底部,而不是两者都有。

使用 dsc 创建带有大量选项的 Discourse 多选用户字段

在 Discourse 的自定义用户字段编辑器中逐一输入数十甚至数百个选项非常繁琐。我一直在开发一个名为 dsc 的多用途 Discourse 命令行工具,它利用本地文件让此类操作变得更加简便且具有确定性。操作自定义用户字段只是其众多功能之一。

dsc 可以从 YAML 文件创建新的自定义用户字段,并在单次操作中包含整个有序选项列表。ucf 命令是 user-field 的别名。

首先,列出你现有的自定义用户字段:

dsc ucf list myforum --format yaml

这将显示它们的 ID、类型、选项和设置。

准备字段

创建 user-fields.yaml 文件,并将源 URL、问题描述和选项替换为你自己的内容。请确保你的 YAML 格式有效——这很容易出错。

例如,这是一个包含 25 个选项的国家多选字段:

version: 1
source: https://forum.example.org
user_fields:
  - name: Countries
    description: 你在哪些国家工作?请选择所有适用的选项。
    field_type: multiselect
    editable: true
    requirement: on_signup
    show_on_profile: false
    show_on_signup: true
    show_on_user_card: false
    searchable: false
    options:
      - Argentina
      - Australia
      - Brazil
      - Canada
      - China
      - Denmark
      - Egypt
      - France
      - Germany
      - India
      - Ireland
      - Italy
      - Japan
      - Kenya
      - Mexico
      - Netherlands
      - New Zealand
      - Nigeria
      - Norway
      - Singapore
      - South Africa
      - Spain
      - Sweden
      - United Kingdom
      - United States

这会创建一个包含 25 个选项的字段,而不是 25 个独立的字段。你可以根据需要扩展列表——我曾成功使用此方法创建了一个拥有 250 多个选项的字段。

预览、创建和验证

dsc ucf push --dry-run myforum user-fields.yaml
# 在应用之前审查计划及完整的 YAML 文件。
dsc ucf push myforum user-fields.yaml
dsc ucf show myforum <field-id> --format yaml

欢迎对 dsc 提供反馈,包括对缺失功能的建议。请在 GH 代码库上创建 Issue。

2 个赞