Tutorial precedente: Developing Discourse Plugins - Part 1 - Create a basic plugin
Introduzione: Template Handlebars
L’applicazione client di Discourse è scritta utilizzando il framework Javascript Ember.js. Ember utilizza Handlebars per tutti i template HTML. C’è un’ottima introduzione al linguaggio di templating a quel link, quindi leggetelo 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 outlet nei template Handlebars.
Se sfogliate i template Handlebars di Discourse, vedrete 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 di plugin possono sfruttare per aggiungere il proprio markup Handlebars.
Quando scrivete il vostro plugin, cercate nei template Handlebars di Discourse (nei file .hbs) che volete modificare un <PluginOutlet />. Se non ce n’è uno, chiedetecelo per aggiungerlo! Saremo lieti di aggiungerli se avete un buon caso d’uso. Se volete rendere più facile e veloce per noi farlo, inviate una pull request su github!
Se volete vedere alcuni dei punti in cui esistono i plugin outlet, potete eseguire il seguente comando se siete su OSX o Linux:
git grep "<PluginOutlet" -- "*.hbs"
Potete anche visualizzare i plugin outlet su un sito Discourse attivando la Discourse Developer Toolbar. Digitate enableDevTools() nella console del browser su un forum Discourse e cliccate sull’icona a forma di spina che appare sul lato sinistro della pagina.
Connessione a un Plugin Outlet
Una volta trovato il plugin outlet che volete estendere, dovete scrivere un connector per esso. Un connettore è in realtà solo un template Handlebars il cui nome del file include connectors/<nome outlet> al suo interno.
Ad esempio, se il template Handlebars di Discourse ha:
<PluginOutlet @name="evil-trout" />
Allora qualsiasi file Handlebars che create nella directory connectors/evil-trout verrà automaticamente aggiunto. Quindi, se avete creato il file:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.hbs
Con il contenuto:
<b>Hello World</b>
Discourse inserirà <b>Hello World</b> in quel punto del template.
Notate che abbiamo chiamato il file hello.hbs – L’ultima parte del nome del file non è importante, ma deve essere unica per ogni plugin. È utile nominarlo qualcosa che descriva ciò che state estendendo. Questo renderà il debug più facile in futuro.
Risoluzione dei problemi
- Ricontrollate il nome del connettore e assicuratevi che corrisponda perfettamente al nome del plugin.
Maggiori informazioni
Altro nella serie
Parte 1: Basi dei Plugin
Parte 2: Questo argomento
Parte 3: Impostazioni del Sito
Parte 4: Configurazione git
Parte 5: Interfacce di Amministrazione
Parte 6: Test di Accettazione
Parte 7: Pubblica il tuo plugin
Questo documento è controllato tramite versione - suggerisci modifiche su github.



