Onde vai a pasta common (para html) em um plugin?

Quero alterar alguns códigos HTML básicos em um plugin que estou testando (seria conveniente ter todas as alterações em um único plugin). Seria um HTML que eu colocaria na seção header do personalizador de temas no painel de administração, caso estivesse usando esse painel em vez de um plugin.

Em um tema, você teria apenas uma pasta direta chamada common, que conteria os diferentes arquivos, como header.html.

Sei que folhas de estilo comuns para um plugin podem ficar em plugin/assets/stylesheets/common. Onde eu colocaria esse arquivo header.html em um plugin?

O que há no seu ‘html’?

Scripts normalmente iriam em um inicializador ou seriam acionados por um evento em um componente.

Chamadas à API do plugin iriam no inicializador.

Alterações nos templates provavelmente seriam vinculadas a um conector de plugin (ou, se for desesperado, apenas: sobrescreva-os na pasta de templates).

Você também pode decorar ou reabrir widgets no inicializador.

Você não deve precisar colocar ‘html puro’ em lugar algum; afinal, o que você está realmente modificando é um aplicativo web, não uma página web?

De qualquer forma, não haverá nenhum dano particular em executar múltiplos plugins e TCs lado a lado …

Nós inserimos HTML novo o tempo todo em temas e no personalizador. Quero adicionar isso ao meu plugin (em vez de um tema) para ter uma única base de código.

Onde você coloca HTML em um plugin que, se você estivesse criando um tema, colocaria no “header” na pasta comum?

Não há equivalente direto, a meu ver.

Você também não precisa de um.

Porte o que você está tentando fazer.

Para CSS, o equivalente em um plugin é [plugin]/assets/stylesheets/common/[file.scss]

Seguindo esse formato, tentei adicionar um arquivo em [plugin]/assets/views/layouts/common/header.html, mas não funcionou (tentar apenas views/header.html também não funcionou).

Posso alterar os templates, mas para mudanças simples de HTML como fazemos em temas, seria bom ter uma alteração simples de HTML no header.html (ou no equivalente). Por exemplo, onde você colocaria o seguinte em um plugin (que já está fazendo coisas complexas no lado do servidor, daí a necessidade de um plugin):

Eu também acho confusas as diferenças entre como fazer coisas assim em um plugin versus em um tema. Você poderia deixar para lá e usar um componente de tema para isso, mas parece que você está procurando a melhor resposta, e não a mais rápida. (embora existam algumas vantagens em ter esse conteúdo separado para manutenção independente)

Acho que você precisa adicionar uma linha ao plugin.rb que inclua o arquivo desejado. O que eu faço é clonar algo do repositório do Discourse no GitHub chamado all-the-plugins e usar grep ali para encontrar um exemplo.

Legal. Obrigado. Sim, tenho pensado que talvez a situação seja essa: atualmente, não há uma maneira direta de fazer alterações em HTML em um plugin como você faria em um tema — para alterar o HTML, é preciso acessar os templates/conectores de um plugin (não é muito complicado, mas é diferente da abordagem mais simples dos temas, como common/header.html).

Vou dar uma olhada no plugin.rb e ver se isso é atualmente mais fácil do que seguir o caminho normal de template/componente.

Veja How to override a template.hbs from a plugin - #4 by tshenry. Acredito que seja exatamente o que você está procurando.

Não é onde eu disse, mas você o coloca na árvore de assets com o nome correto. É impossível entender até que você compreenda, e aí fica totalmente óbvio.

Edição: Ei @JQ331. Acabei de perceber que acho que fiz o que você queria em um plugin ontem, mas sou tão ruim nisso que não percebi que era isso que você estava procurando. Veja GitHub - literatecomputing/discourse-max-topics-per-month · GitHub. É muito simples, então não há muito o que atrapalhar na hora de encontrar o exemplo.