È fantastico, @angus. Grazie mille.
Un video è sempre una bella cosa: sono totalmente favorevole a rendere le cose il più semplici possibile, ma non credo sia necessario per ottenere il valore chiave da queste risorse che @angus ha raccolto. Queste risorse forniscono il codice necessario per raggiungere l’obiettivo specifico di ciascuna risorsa (avere un campo personalizzato per i topic o per le categorie funzionante). Un video probabilmente consisterebbe semplicemente in @angus o qualcun altro che spiega come implementare la risorsa, ma è abbastanza semplice e possiamo probabilmente esporlo direttamente qui.
Per essere chiari, queste risorse non sono plugin che puoi semplicemente aggiungere al tuo sito come soluzione plug-and-play per personalizzare il forum. Piuttosto, ti forniscono in modo efficiente la comprensione necessaria per codificare i tuoi campi personalizzati nel tuo plugin.
Ecco come ho utilizzato queste risorse:
Dovrai aggiungere il nome e il tipo di campo che desideri in config/settings. Il codice in queste risorse utilizza variabili definite lì. Quindi, dopo averlo fatto, in realtà non hai bisogno di personalizzare molto il codice per farlo funzionare nel tuo plugin: le variabili in plugin.rb e altrove fanno riferimento a config/settings e dovrebbero funzionare.
Dopo aver aggiornato config/settings, puoi semplicemente seguire il codice e aggiungerlo al tuo plugin:
-
Inizia con il codice in plugin.rb e aggiungilo al file plugin.rb del tuo plugin per creare il campo personalizzato.
-
Poi vai all’initializer (in assets/javascripts/discourse/[custom-field-initializer]) per ottenere il codice che inizializza il campo personalizzato e ti permette di salvarlo sul server.
-
Poi crea il form nel layer di visualizzazione dove l’utente (o la tua app, se l’app aggiunge il campo automaticamente) potrà inserire il valore per il campo personalizzato, qui (assets/discourse/connectors/[plugin-outlet-name]/[il-tuo-template-speciale].hbs).
-
@angus ha configurato tutto in modo che tu debba aggiungere i form per i campi personalizzati in un plugin outlet che verrà inserito nel template di Discourse. Le impostazioni per questo form si trovano qui (assets/javascripts/discourse/lib/[nome-campo-personalizzato].js.es6), quindi probabilmente vorrai personalizzare anche questo per far funzionare il form.
@angus, sentiti libero di correggere qualsiasi cosa io abbia detto qui.
Una volta preso confidenza con la configurazione del campo personalizzato seguendo i passaggi sopra, ho iniziato a personalizzare ulteriormente le cose (ad esempio, diventando più creativo nel modo in cui funziona il form), ma questo è stato un punto di partenza estremamente utile che mi ha fatto risparmiare ore di lavoro.
Dopo averlo completato, ho avuto alcune domande (come ho chiesto prima), ma ottenere risposte in Development sembra il modo più utile per procedere da quel punto.