No entanto, estou tendo problemas para criar vários campos personalizados. Alguém tem um exemplo de código funcional que estaria disposto a vender ou compartilhar comigo? Posso modificá-lo para atender às minhas necessidades, mas preciso de um pouco de ajuda para começar. Os 2 novos campos que eu precisaria seriam preço (string) e url (string). Eu adoraria adicionar também um campo de upload de imagem ao tópico, mas ainda não vi nada parecido.
Olá,
Ficarei feliz em ajudar você. Recentemente, criei um plugin onde utilizei um campo personalizado de tópico (Discourse Chain Topics Plugin).
No meu plugin, criei dois campos extras para cada tópico do tipo inteiro. Da mesma forma, você pode adicionar quantos campos desejar. No final, os campos personalizados de tópico/usuário são um objeto JSON onde cada campo que você adicionar será uma chave/valor no objeto JSON. Onde a chave é o nome do campo e o valor é o valor.
O exemplo que você trouxe acima (que também me ajudou) é construído de forma que você adiciona um campo extra no painel de administração, onde escolhe seu tipo e nome. No entanto, você não precisa necessariamente relacionar os campos extras ao painel de administração. Da mesma forma, você pode adicionar quantos campos desejar (não tenho certeza de como isso pode afetar o desempenho).
Por último, sinta-se à vontade para me contatar/enviar uma mensagem para qualquer suporte que precisar. Você também pode encontrar meus detalhes de contato em https://ghassan.blog
Desejo a você boa sorte.
Olá, eu estava tendo o mesmo problema.. agora descobri como realizar com vários campos personalizados!
Além de configurar o plugin.rb, você também precisará ter arquivos individuais (inicializador js e os templates .hbs e .hbr) para cada campo!
O plugin discourse-topic-custom-fields tem uma pasta chamada
plugins/discourse-topic-custom-fields/assets/javascripts/discourse/initializers
nesta pasta você tem um arquivo chamado: topic-custom-field-initializer.js.es6
para um único campo você pode apenas editar este arquivo, mas para vários campos você deve ter outros arquivos como este,
topic-custom-field-url-initializer.js.es6 e topic-custom-field-price-initializer.js.es6
dentro de cada arquivo você terá 3 linhas com uma variável api chamando um método registerConnectorClass, você precisa mudar o segundo parâmetro e adicionar um sufixo para ter um nome exclusivo para cada classe de campo em cada uma das 3 linhas
não se esqueça de mudar o nome das exportações em cada arquivo (logo após o “exports default {…”).
Além disso, para os arquivos hbs e hbr, você precisará criar arquivos separados para cada campo também, você só precisa copiar e colar os mesmos arquivos e apenas adicionar um sufixo para cada nome de arquivo, por exemplo: