Tutorial precedente: Developing Discourse Plugins - Part 1 - Create a basic plugin
Per iniziare: Template
L’applicazione client di Discourse è scritta utilizzando il framework JavaScript Ember.js. Ember utilizza i Template per generare HTML. Esiste un’ottima introduzione al linguaggio di templating al link indicato, quindi leggilo attentamente.
Il problema: Aggiungere elementi all’interfaccia utente di Discourse
Molti plugin devono aggiungere ed estendere l’interfaccia web di Discourse. Forniamo un meccanismo per farlo chiamato “plugin outlets” nei template Handlebars.
Se esplori i template di Discourse, vedrai spesso il seguente markup:
<PluginOutlet @name="edit-topic" />
Questo dichiara un plugin outlet chiamato “edit-topic”. È un punto di estensione nel template che gli autori dei plugin possono sfruttare per aggiungere il proprio markup.
Quando scrivi il tuo plugin, cerca nei template di Discourse (nei file .gjs) che desideri modificare la presenza di un <PluginOutlet />. Se non esiste, chiedici pure di aggiungerlo! Lo faremo volentieri se hai un caso d’uso valido. Se vuoi facilitare e velocizzare il processo, invia una pull request su GitHub!
Se vuoi vedere alcuni dei punti in cui esistono plugin outlet, puoi eseguire il seguente comando in una shell conforme a POSIX:
git grep -A 1 "<PluginOutlet" -- "*.gjs"
Puoi anche visualizzare i plugin outlet su un sito Discourse attivando la Discourse Developer Toolbar. Basta digitare enableDevTools() nella console del browser su un forum Discourse e fare clic sull’icona della spina che appare sul lato sinistro della pagina.
Collegamento a un Plugin Outlet
Una volta trovato il plugin outlet a cui desideri aggiungere qualcosa, devi scrivere un connector per esso. Un connector è un componente .gjs il cui nome file include connectors/<nome outlet> nel suo percorso.
Ad esempio, se il template di Discourse contiene:
<PluginOutlet @name="evil-trout" />
Allora tutti i file .gjs che crei nella directory connectors/evil-trout verranno aggiunti automaticamente. Quindi, se creassi il file:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.gjs
Con il seguente contenuto:
<template>
<b>Ciao Mondo</b>
</template>
Discourse inserirebbe <b>Ciao Mondo</b> in quel punto del template.
Nota che abbiamo chiamato il file hello.gjs: il nome del file (a differenza del nome della directory) non è importante, ma deve essere unico tra tutti i plugin. È utile chiamarlo in modo descrittivo rispetto a ciò che stai estendendo. Questo renderà il debug più semplice in futuro.
Risoluzione dei problemi
- Controlla attentamente il nome del connector e assicurati che corrisponda perfettamente al nome del plugin.
Ulteriori informazioni
Altri articoli della serie
Parte 1: Basi dei plugin
Parte 2: Questo argomento
Parte 3: Impostazioni del sito
Parte 4: Configurazione git
Parte 5: Interfacce amministrative
Parte 6: Test di accettazione
Parte 7: Pubblica il tuo plugin
Questo documento è sottoposto a controllo versione: suggerisci modifiche su GitHub.



