Dove va la cartella comune (per html) in un plugin?

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?

Cosa c’è nel tuo ‘html’?

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 …

1 Mi Piace

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 quanto ne so, non esiste un equivalente diretto.

In ogni caso, non ne hai bisogno.

Porta qui quello che stai cercando di fare.

1 Mi Piace

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):

1 Mi Piace

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.

1 Mi Piace

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.

Vedi How to override a template.hbs from a plugin - #4 by tshenry. Penso che sia la magia che stai cercando.

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.

1 Mi Piace