Voglio modificare alcuni elementi HTML di base in un plugin su cui sto sperimentando (sarebbe comodo avere tutte le modifiche in un unico plugin). Si tratterebbe di HTML che inserirei nella sezione header del personalizzatore del tema nella dashboard di amministrazione, se utilizzassi quella dashboard invece di un plugin.
In un tema, avresti semplicemente una cartella diretta denominata common, che conterrebbe i diversi file, come header.html.
So che i fogli di stile comuni per un plugin possono andare in plugin/assets/stylesheets/common. Dove dovrei mettere questo file header.html in un plugin?
Gli script di solito vengono inseriti in un inizializzatore o attivati da un evento in un componente.
Le chiamate allâAPI del plugin vanno nellâinizializzatore.
Le modifiche ai template vengono probabilmente collegate a un connettore del plugin (o, se necessario, sovrascritte nella cartella dei template).
Potresti anche decorare o riaprire i widget nellâinizializzatore.
Non dovresti avere bisogno di inserire âhtml nudoâ da nessuna parte; dopotutto, ciò che stai effettivamente modificando è unâapplicazione web, non una pagina web?
In ogni caso, non ci saranno particolari problemi nellâeseguire piĂš plugin e TC insieme âŚ
Inseriamo nuovo HTML continuamente nei temi e nel personalizzatore. Voglio aggiungere questo al mio plugin (invece che a un tema) in modo da avere unâunica base di codice.
Dove si inserisce lâHTML in un plugin che, se stessi creando un tema, metteresti nella âheaderâ nella cartella comune?
Per CSS, lâequivalente in un plugin è [plugin]/assets/stylesheets/common/[file.scss]
Seguendo questo formato, ho provato ad aggiungere un file in [plugin]/assets/views/layouts/common/header.html, ma non ha funzionato (nemmeno views/header.html ha funzionato).
Potrei modificare i template, ma per semplici modifiche HTML come quelle che facciamo nei temi, sarebbe utile poter apportare una modifica HTML semplice in header.html (o nellâequivalente). Ad esempio, dove inseriresti quanto segue in un plugin (che giĂ gestisce operazioni complesse lato server, da cui la necessitĂ di un plugin):
Trovo anchâio confusiva la differenza tra come si fa una cosa del genere in un plugin rispetto a un tema. Potresti optare per usare un componente del tema per questo genere di cose, ma sembra che tu stia cercando la soluzione migliore piuttosto che quella piĂš veloce. (anche se ci sono alcuni vantaggi nel tenere queste cose separate per una manutenzione indipendente)
Penso che tu debba aggiungere una riga al file plugin.rb che includa il file che desideri. Io di solito clono qualcosa dal repository GitHub di Discourse chiamato all-the-plugins e uso grep lĂŹ per trovare un esempio.
Bene, grazie. SĂŹ, stavo pensando che forse la situazione è che al momento non esiste un modo semplice per apportare modifiche HTML a un plugin come si farebbe in un tema: per modificare lâHTML devi entrare nei template o nei connettori del plugin (non è troppo complicato, ma è diverso dal concetto piĂš semplice dei temi, come ad esempio common/header.html).
Darò unâocchiata a plugin.rb per vedere se è attualmente piĂš semplice rispetto alla normale procedura di template/componenti.
Non è dove ho detto, ma lo inserisci nellâalbero degli asset con il nome corretto. Ă impossibile da capire finchĂŠ non lo afferrai, e poi è totalmente ovvio.
Modifica: Ehi @JQ331. Ho appena realizzato che credo di aver fatto ciò che desideri in un plugin ieri, ma sono cosĂŹ poco bravo che non ho capito che era quello che stavi cercando. Vedi GitHub - literatecomputing/discourse-max-topics-per-month ¡ GitHub. Ă molto semplice, quindi non câè molto che possa ostacolare la ricerca dellâesempio.