Criando um campo de usuário multiseleção no Discourse com muitas opções
Digitar dezenas ou centenas de opções uma a uma no editor de campos de usuário personalizados do Discourse é tedioso. Estou desenvolvendo uma ferramenta CLI multiuso para o Discourse chamada dsc, que torna operações como essa mais fáceis e determinísticas usando arquivos locais. Apenas uma das muitas coisas que ela pode fazer é manipular Campos de Usuário Personalizados.
O dsc pode criar um novo campo de usuário personalizado a partir de um arquivo YAML, incluindo toda a lista ordenada de opções em uma única operação. O comando ucf é um apelido para user-field.
Primeiro, liste seus campos de usuário personalizados existentes:
dsc ucf list myforum --format yaml
Isso mostra seus IDs, tipos, opções e configurações.
Preparar o campo
Crie user-fields.yaml, substituindo a URL de origem, a pergunta e as opções pelas suas. Certifique-se de que seu YAML seja válido - é fácil errar.
Por exemplo, aqui está uma multiseleção de países com 25 opções:
version: 1
source: https://forum.example.org
user_fields:
- name: Countries
description: Which countries do you work in? Select all that apply.
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
Isso cria um único campo com 25 opções, em vez de 25 campos separados. Você pode estender a lista conforme necessário - usei essa abordagem com sucesso para um campo com mais de 250 opções.
Pré-visualizar, criar e verificar
dsc ucf push --dry-run myforum user-fields.yaml
# Revise o plano e o arquivo YAML completo antes de aplicar.
dsc ucf push myforum user-fields.yaml
dsc ucf show myforum <field-id> --format yaml
Fico feliz em receber feedback sobre o dsc, incluindo ideias para recursos ausentes. Por favor, crie issues no repositório no GitHub.