Tuttavia, ho difficoltà a creare più campi personalizzati. Qualcuno ha un esempio di codice funzionante che sarebbe disposto a vendermi o condividere con me? Posso modificarlo per soddisfare le mie esigenze, ma ho solo bisogno di un piccolo aiuto per iniziare. I 2 nuovi campi di cui avrei bisogno sarebbero prezzo (stringa) e url (stringa). Mi piacerebbe anche aggiungere un campo di caricamento immagini all’argomento, ma non ho ancora visto nulla di simile.
Ciao,
Sarei felice di aiutarti. Recentemente ho creato un plugin in cui ho utilizzato campi personalizzati per gli argomenti (Discourse Chain Topics Plugin).
Nel mio plugin ho creato due campi aggiuntivi per ogni argomento di tipo intero. Allo stesso modo, potresti aggiungere tutti i campi che desideri. Alla fine, i campi personalizzati per argomenti/utenti sono un oggetto JSON in cui ogni campo che aggiungi sarà una chiave/valore nell’oggetto JSON. Dove la chiave è il nome del campo e il valore è il valore.
L’esempio che hai portato sopra (che ha aiutato anche me) è costruito in modo tale da aggiungere un campo extra nel pannello di amministrazione, dove scegli il suo tipo e nome. Tuttavia, non devi necessariamente correlare i campi extra al pannello di amministrazione. Allo stesso modo, potresti aggiungere tutti i campi che desideri (non sono sicuro di come ciò possa influire sulle prestazioni).
Infine, non esitare a contattarmi/inviarmi un messaggio per qualsiasi supporto di cui potresti aver bisogno. Puoi anche trovare i miei dettagli di contatto su https://ghassan.blog
Ti auguro buona fortuna.
Ciao, ho avuto lo stesso problema.. ora ho capito come fare con più campi personalizzati!
Oltre a configurare il plugin.rb, dovrai anche avere file individuali (inizializzatore js e template .hbs e .hbr) per ogni campo!
Il plugin discourse-topic-custom-fields ha una cartella chiamata
in questa cartella hai un file chiamato: topic-custom-field-initializer.js.es6
per un singolo campo puoi semplicemente modificare questo file, ma per più campi dovresti avere altri file come questo,
topic-custom-field-url-initializer.js.es6 e topic-custom-field-price-initializer.js.es6
all’interno di ogni file avrai 3 righe con una variabile api che chiama un metodo registerConnectorClass, devi cambiare il secondo parametro e aggiungere un suffisso per avere un nome esclusivo per ogni classe di campo su ciascuna delle 3 righe
non dimenticare di cambiare il nome delle esportazioni in ogni file (subito dopo “exports default {…”).
inoltre, per i file hbs e hbr, dovrai creare file separati anche per ogni campo, devi solo copiare e incollare gli stessi file e aggiungere un suffisso per ogni nome file, ad es.: