omppatil
(Om Patil)
28 Novembre 2023, 12:34pm
1
Ciao!
Sono nuovo nella creazione di plugin per Discourse e apprezzerei un po’ di aiuto nell’aggiungere un pulsante di attivazione/disattivazione al menu dei post e nell’implementare la sua azione nel plugin.
Lilly
(Lillian )
28 Novembre 2023, 12:41pm
2
Ciao @omppatil , forse questo post potrebbe aiutarti a trovare la giusta direzione:
Se desideri aggiungere un pulsante al menu dei post, avrai bisogno di qualcosa di leggermente diverso, poiché i post sono widget .
Dovrai aggiungere qualcosa di simile al tuo tema o plugin.
api.addPostMenuButton("my-button", () => {
return {
action: "someAction",
icon: "someIcon",
className: "someClass",
title: "some title",
};
});
L’API dei plugin dispone di un metodo per aggiungere nuovi pulsanti che rende questa operazione relativamente semplice.
discourse/app/assets/ja…
Inoltre, se sei nuovo alla programmazione di plugin per Discourse:
Ho appena iniziato, ma ecco il mio “primo passo” per mettervi in marcia:
Leggi:
queste
queste
Prova a leggere il codice dei plugin più semplici, ma popolari , e vedi se riesci a capire cosa fanno (non è sempre facile, soprattutto con la complessità di gestire più file e la talvolta brutale brevità funzionale di JavaScript, ma persisti)
Devi imparare:
Molto JavaScript (non cercare oltre i video eccellenti e divertenti (!) di @mpj su Fun Fun Function (grazie amico!))
Molto Ember e un po’ di R…
There are a few ‘how to start’ guides for working with Discourse already and a wealth of useful info on meta, but I thought it might help to give an insight to the mental processes of starting from little, if any, prior coding experience to building substantial Discourse plugins.
Discourse is written by experienced developers and has a large codebase. This can feel intimidating. This intimidation factor can be a significant barrier for novice developers. This is a kind of ‘psychological primer’…
Ciao!
Puoi usare addPostMenuButton
api.addPostMenuButton('coffee', () => {
return {
action: 'drinkCoffee',
icon: 'coffee',
className: 'hot-coffee',
title: 'coffee.title',
position: 'first' // può essere `first`, `last` o `second-last-hidden`
};
});
Quindi puoi aggiungere la tua azione in questo modo:
api.attachWidgetAction("post", "drinkCoffee", function () {
//
}
EDIT: Sono stato “Lillianizzato” . Sarebbe anche una buona idea seguire le guide che Lilly ha postato!
omppatil
(Om Patil)
28 Novembre 2023, 12:53pm
4
Pertanto, quale struttura di file dovrebbe essere implementata e dove dovrebbe essere inserito il codice di cui sopra?
Lilly
(Lillian )
28 Novembre 2023, 1:26pm
5
La lettura degli argomenti collegati sopra dovrebbe rispondere alle tue domande relative allo sviluppo. È possibile che tu possa ottenere ciò che desideri con un componente tematico invece di un plugin. Pertanto, aggiungerei anche questi alla tua lista di letture:
Questo è un corso intensivo sui concetti base dei temi Discourse. Il pubblico target è chiunque non sia familiare con i temi Discourse. Se hai già usato temi Discourse / componenti tema, probabilmente questa guida non è qualcosa che devi leggere.
Cosa sono i temi e i componenti tema?
Un tema o componente tema è un insieme di file raggruppati insieme progettati per modificare Discourse visivamente o per aggiungere nuove funzionalità.
Iniziamo con i temi.
Temi
In generale, i temi non sono comp…
Discourse Themes e Theme Components possono essere utilizzati per personalizzare l’aspetto, l’atmosfera e la funzionalità del frontend di Discourse. Questa sezione delle guide per sviluppatori mira a fornire tutti i materiali di riferimento necessari per sviluppare temi semplici per un singolo sito, fino a complessi componenti tema open source.
Questa introduzione mira a fornire una mappa di tutti gli strumenti e le API per lo sviluppo di temi. Se preferisci un tutorial passo passo per lo svilu…
inoltre, dal primo link che ho postato:
Joe:
Questo componente tematico utilizza quel metodo per aggiungere un nuovo pulsante a quel menu in base ad alcune condizioni e definisce una nuova azione, quindi dai un’occhiata qui
https://github.com/discourse/raw-post-button