Создание многоселективного пользовательского поля в Discourse с множеством вариантов
Вводить десятки или сотни вариантов по одному в редакторе пользовательских полей Discourse — утомительное занятие. Я работал над многоцелевым инструментом CLI для Discourse под названием dsc, который упрощает такие операции и делает их более детерминированными с помощью локальных файлов. Одна из многих вещей, которую он может делать, — это управление пользовательскими полями (Custom User Fields).
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:
- Аргентина
- Австралия
- Бразилия
- Канада
- Китай
- Дания
- Египет
- Франция
- Германия
- Индия
- Ирландия
- Италия
- Япония
- Кения
- Мексика
- Нидерланды
- Новая Зеландия
- Нигерия
- Норвегия
- Сингапур
- Южная Африка
- Испания
- Швеция
- Великобритания
- Соединенные Штаты
Это создает одно поле с 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, включая идеи недостающих функций. Пожалуйста, создавайте issues в репозитории на GitHub.