Como adicionar campos personalizados aos modelos

Isso é fantástico, @angus. Muito obrigado.

Um vídeo é sempre bom — sou totalmente a favor de tornar as coisas o mais diretas possível, mas não acho que seja necessário para obter o valor principal desses recursos que @angus reuniu. Esses recursos fornecem o código necessário para atingir o objetivo específico do recurso (ter um campo personalizado de tópico funcionando ou um campo personalizado de categoria). Um vídeo provavelmente seria apenas @angus ou outra pessoa explicando como implementar o recurso, mas isso é direto, e podemos provavelmente apenas descrevê-lo aqui.

Para ficar claro, esses recursos não são plugins que você apenas adiciona ao seu site como plug-and-play para personalizar seu fórum. Em vez disso, eles fornecem de forma eficiente o entendimento necessário para codificar seus próprios campos personalizados em seu plugin.


É assim que usei esses recursos:

Você precisará adicionar o nome e o tipo do campo desejado em config/settings. O código nesses recursos usa variáveis definidas ali. Então, na verdade, você não precisa fazer muita personalização do código para fazê-lo funcionar em seu próprio plugin depois disso — as variáveis em plugin.rb e em outros lugares referem-se a config/settings e, em seguida, devem funcionar.

Depois de atualizar config/settings, você pode simplesmente seguir o código, adicionando-o ao seu plugin:

  • Comece com o código em plugin.rb e adicione-o ao plugin.rb do seu próprio plugin para criar o campo personalizado.

  • Em seguida, vá até o initializer (em assets/javascripts/discourse/[custom-field-initializer]) para obter o código que inicializará o campo personalizado e permitirá salvá-lo no servidor.

  • Depois, crie o formulário na camada de visualização, que será onde o usuário (ou seu aplicativo, se o aplicativo adicionar o campo automaticamente) poderá inserir o valor do campo personalizado, aqui (assets/discourse/connectors/[plugin-outlet-name]/[seu-template-especial].hbs).

  • @angus configurou isso para que você adicionasse os formulários para os campos personalizados em uma saída de plugin que será inserida no template do Discourse. As configurações para esse formulário estão aqui (assets/javascripts/discourse/lib/[nome-do-campo-personalizado].js.es6), então você provavelmente também quererá personalizá-lo para fazer o formulário funcionar.

@angus, sinta-se à vontade para corrigir qualquer coisa que eu tenha dito aqui.

Depois que peguei o jeito de configurar o campo personalizado seguindo os passos acima, comecei a personalizar um pouco mais as coisas (por exemplo, sendo mais criativo com o funcionamento do formulário), mas isso foi um ponto de partida extremamente útil que me economizou horas de trabalho.

Depois de passar por tudo, tive algumas perguntas (como perguntei anteriormente), mas obter respostas em Development parece ser a maneira mais útil de proceder a partir daí.

3 curtidas