Tutorial anterior: Developing Discourse Plugins - Part 1 - Create a basic plugin
Primeiros Passos: Templates Handlebars
A aplicação cliente do Discourse é escrita usando a estrutura Javascript Ember.js. O Ember usa Handlebars para todos os templates HTML. Há uma ótima introdução à linguagem de template naquele link, então, definitivamente, leia-o com atenção.
O Problema: Adicionar elementos à Interface do Usuário do Discourse
Muitos plugins precisam adicionar e estender a interface web do Discourse. Nós fornecemos um mecanismo para fazer isso chamado plugin outlets em templates handlebars.
Se você navegar pelos templates handlebars do discourse, frequentemente verá a seguinte marcação:
<PluginOutlet @name="edit-topic" />
Isso declara um plugin outlet chamado “edit-topic”. É um ponto de extensão no template que os autores de plugins podem alavancar para adicionar sua própria marcação handlebars.
Ao criar seu plugin, procure nos templates handlebars do discourse (em arquivos .hbs) onde você deseja fazer alterações por um <PluginOutlet />. Se não houver um, basta nos pedir para estendê-lo! Teremos prazer em adicioná-los se você tiver um bom caso de uso. Se você quiser tornar isso mais fácil e rápido para nós, envie um pull request no github!
Se você quiser ver alguns dos lugares onde os plugin outlets existem, você pode executar o seguinte comando se estiver no OSX ou Linux:
git grep "<PluginOutlet" -- "*.hbs"
Você também pode exibir os plugin outlets em um site Discourse ativando a Discourse Developer Toolbar. Basta digitar enableDevTools() no console do navegador em um fórum Discourse e clicar no ícone de plugue que aparece no lado esquerdo da página.
Conectando-se a um Plugin Outlet
Depois de encontrar o plugin outlet ao qual deseja adicionar, você precisa escrever um connector para ele. Um connector é realmente apenas um template handlebars cujo nome de arquivo inclui connectors/<nome do outlet> nele.
Por exemplo, se o template handlebars do Discourse tiver:
<PluginOutlet @name="evil-trout" />
Então, quaisquer arquivos handlebars que você criar no diretório connectors/evil-trout serão anexados automaticamente. Então, se você criou o arquivo:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.hbs
Com o conteúdo:
<b>Hello World</b>
O Discourse inseriria <b>Hello World</b> naquele ponto do template.
Note que chamamos o arquivo de hello.hbs – A parte final do nome do arquivo não importa, mas deve ser única em todos os plugins. É útil nomeá-lo com algo descritivo sobre o que você está estendendo. Isso tornará a depuração mais fácil no futuro.
Solução de Problemas
- Verifique novamente o nome do connector e certifique-se de que ele corresponda perfeitamente ao nome do plugin.
Mais informações
Mais na série
Parte 1: Noções Básicas de Plugins
Parte 2: Este tópico
Parte 3: Configurações do Site
Parte 4: Configuração do git
Parte 5: Interfaces de Administrador
Parte 6: Testes de Aceitação
Parte 7: Publique seu plugin
Este documento é controlado por versão - sugira alterações no github.



