Tutorial anterior: Developing Discourse Plugins - Part 1 - Create a basic plugin
Começando: Templates
O aplicativo cliente do Discourse é escrito usando o framework JavaScript Ember.js. O Ember usa Templates para gerar HTML. Há uma excelente introdução à linguagem de templates nesse link, então leia-a cuidadosamente.
O Problema: Adicionar elementos à Interface do Usuário do Discourse
Muitos plugins precisam adicionar e expandir a interface web do Discourse. Oferecemos um mecanismo para isso chamado “plugin outlets” em templates Handlebars.
Se você navegar pelos templates do Discourse, verá frequentemente 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 aproveitar para adicionar sua própria marcação.
Ao criar seu plugin, procure nos templates do Discourse (em arquivos .gjs) que deseja alterar por um <PluginOutlet />. Se não houver nenhum, basta pedir que o expandamos! Adicionaremos com prazer se você tiver um caso de uso válido. Se quiser facilitar e acelerar nosso trabalho, envie uma solicitação de pull no GitHub!
Se quiser ver alguns dos locais onde existem plugin outlets, execute o seguinte comando em um shell compatível com POSIX:
git grep -A 1 "<PluginOutlet" -- "*.gjs"
Você também pode exibir os plugin outlets em um site do Discourse ativando a Barra de Ferramentas de Desenvolvedor do Discourse. Basta digitar enableDevTools() no console do navegador em um fórum do 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 é um componente .gjs cujo nome de arquivo inclui connectors/<nome do outlet> em seu caminho.
Por exemplo, se o template do Discourse tiver:
<PluginOutlet @name="evil-trout" />
Então qualquer arquivo .gjs que você criar no diretório connectors/evil-trout será automaticamente anexado. Então, se você criar o arquivo:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.gjs
Com o conteúdo:
<template>
<b>Olá Mundo</b>
</template>
O Discourse inserirá <b>Olá Mundo</b> naquele ponto do template.
Observe que chamamos o arquivo de hello.gjs — O nome do arquivo (diferente do nome do diretório) não importa, mas deve ser exclusivo em todos os plugins. É útil nomeá-lo de forma descritiva do que você está estendendo para fazer. Isso facilitará a depuração no futuro.
Solução de Problemas
- Verifique novamente o nome do connector e certifique-se de que corresponde perfeitamente ao nome do plugin.
Mais informações
Mais na série
Parte 1: Noções Básicas sobre Plugins
Parte 2: Este tópico
Parte 3: Configurações do Site
Parte 4: Configuração do git
Parte 5: Interfaces de Administração
Parte 6: Testes de Aceitação
Parte 7: Publique seu plugin
Este documento está sob controle de versão — sugira alterações no GitHub.



