È possibile aggiungere un campo personalizzato ai tag usando la stessa logica?
Qualcuno ha applicato questo ai gruppi? Se sì, puoi condividere cosa hai fatto?
Suppongo che questo possa funzionare. Spero sia ancora aggiornato.
No, i tag non hanno campi personalizzati. Cosa stai cercando di realizzare?
Sì, quel repository dovrebbe funzionare. Cambia solo tutte le istanze di my_field con il nome del tuo campo.
Sto cercando di creare il seguente plugin: Creating a User - Tag relation plugin
C’è altra documentazione su come personalizzare questi campi di gruppo? Funziona davvero benissimo con questo codice boilerplate. Ma come estenderlo correttamente?
Ad esempio, voglio aggiungere alcuni campi di input, come:
<div class="control-group">
<label class="control-label" for="map">Coordinate del capitolo</label>
<input name="chapter_coordinates" id="chapter_coordinates" class="ember-text-field ember-view input-xlarge" value={{group.custom_fields.group_coordinates}} placeholder="Es. 52.3727598,4.8936041" type="text">
<div class="control-instructions">Recupera le coordinate da https://nominatim.openstreetmap.org/</div>
</div>
Ma sto solo indovinando cosa fare qui e poi aggiungere il resto delle cose di Discourse. L’esempio sopra serve a usare un campo per le coordinate. Intendo usare g.json per creare una mappa basata sui metadati del gruppo.
Intendo anche aggiungere una casella di controllo per inviare un’email al gruppo con una configurazione di posta elettronica per quel gruppo.
<div class="control-group">
<label class="control-label" for="map">Contatta il capitolo via email</label>
{{input type="checkbox" checked=group.custom_fields.contact_group_by_email}}
<span>{{i18n 'admin.groups.contact_group_by_email.label'}}</span>
</div>
Tuttavia, questo campo è meglio posizionarlo nella scheda interazione. Come sapere cosa fare per metterlo lì? Vorrei diventare più esperto in questo. Ma ho l’impressione che queste informazioni siano solo nel codice, non documentate da qualche parte. Il che probabilmente va bene, ma richiede solo più tempo e sforzo per trovare quello che sto cercando. Anche se quello che voglio aggiungere è piuttosto piccolo, solo un paio di campi ai gruppi ![]()
Sì, può essere complicato e un po’ opprimente quando si inizia a navigare nel codebase di Discourse. Sembra che tu stia cercando di lavorare con GeoJSON. Hai considerato di utilizzare o estendere il Plugin Locations? Quello è già impostato per funzionare con GeoJSON in Discourse.
Un corso sullo sviluppo di plugin?
Ho preso in considerazione l’idea di tenere un corso gratuito sullo sviluppo di plugin per Discourse, che è essenzialmente ciò di cui hai bisogno. Ho già scritto i materiali del corso per un corso sullo sviluppo di temi (vedi sotto). Se 30 persone voteranno per uno sullo sviluppo di plugin, scriverò e terrò un corso (tramite zoom) su di esso.
- Scrivi e tieni un corso sullo sviluppo di plugin
- Non scrivere e tenere un corso sullo sviluppo di plugin
Introduzione allo sviluppo di temi
- GitHub - pavilionedu/discourse-theme-introduction
- GitHub - pavilionedu/discourse-theme-css
- GitHub - pavilionedu/discourse-theme-colors
- GitHub - pavilionedu/discourse-theme-html-one
- GitHub - pavilionedu/discourse-theme-html-two
- https://github.com/pavilionedu/discourse-theme-javascript-one
- GitHub - pavilionedu/discourse-theme-javascript-two
*ps se raggiunge i 30, per favore fammelo sapere.
Fantastico! In realtà userò un fork di questa mappa della community Fairphone. Utilizzano l’output YAML grezzo di un argomento. Ho modificato il mio fork per utilizzare i dati da g.json per disegnare i marcatori sulla mappa. Mi mancano solo alcuni campi come le coordinate e un booleano per utilizzare un indirizzo email nella mappa. Forse qualcos’altro, ma prima dovrò capire come funzionano le cose. Grazie per i link! Darò un’occhiata questa settimana e vedrò fino a dove arriverò. Anche un corso sarebbe fantastico! Le mie competenze in JS/Ruby sono ora. Principalmente Python/Bash e qualche briciola da altre lingue.
È possibile aggiungere campi personalizzati ai post? Idealmente dall’editor di post.
Qual è la versione minima di discourse richiesta per utilizzare questo plugin?
(discourse-topic-custom-fields)
Questo GitHub - pavilionedu/discourse-group-custom-fields è ancora aggiornato?
Il motivo per cui lo chiedo è che ho tentato di implementare un nuovo campo personalizzato per i gruppi, ma non sembra salvare/mantenere il valore che inserisco nel campo di input dopo aver cliccato su Salva.
Ecco il commit con tutte le modifiche che ho apportato che (penso) hanno seguito correttamente la struttura del repository edu: add discord_role_id field to groups · aloha-pk/discourse-discord-sync@fd3eef1 · GitHub
Sì, l’ho appena testato e funziona come previsto.
{{input type="text" checked=group.custom_fields.discord_role_id}}
Il tuo problema è che hai cambiato il tipo di input in text, ma hai lasciato l’input del valore come checked. Devi cambiare checked in value.
Beh, questo risolverà il problema
Grazie per l’aiuto! ![]()
Sono appena riuscito a ricostruire con questa modifica, ma sfortunatamente vedo ancora lo stesso problema. Il valore che ho inserito viene cancellato dopo aver salvato e ricaricato la pagina.
Altri suggerimenti @angus?
Hai cambiato qualcos’altro rispetto all’esempio? L’esempio funziona. Prova a iniziare dall’esempio stesso. Se anche questo non funziona nel tuo ambiente, allora c’è qualcos’altro che non va. Se l’esempio funziona nel tuo ambiente, allora procedi gradualmente attraverso le modifiche che hai apportato finché non trovi quella che lo sta compromettendo.
Ciao @angus ha aggiunto un campo personalizzato utilizzando questo plugin e ora funziona correttamente. Come posso mostrare questo campo nella pagina della categoria sotto il nome della categoria?
Ecco come puoi scoprirlo:
-
Trova i template in discourse/discourse che renderizzano la pagina della categoria (cerca un elemento html nella pagina)
-
Trova un plugin-outlet in uno di quei template
-
Usa il plugin outlet come descritto qui
Using Plugin Outlet Connectors from a Theme or Plugin
Ho scritto questo codice ma non funziona ancora, puoi dirmi qual è il problema?
<script type="text/discourse-plugin" version="0.8">
const { getOwner } = require("discourse-common/lib/get-owner");
const { htmlSafe } = require("@ember/string");
api.decorateWidget("category-heading:after", (helper) => {
const category = helper.attrs.category;
if (category.custom_fields?.location) {
const customLocation = htmlSafe(category.custom_fields.location);
const template = getOwner(helper).lookup("template:components/category-header");
return template.fragment.build("custom-location", { customLocation });
}
});
</script>
<script type="text/x-handlebars" data-template-name="components/category-header/custom-location">
<div class="category-custom-location">{{customLocation}}</div>
</script>
Qual parte non funziona? Ad esempio, cosa vedi quando inserisci console.log(category.custom_fields) lì?
Ho installato questo plugin oggi con questo codice e sembra essere rotto: GitHub - pavilionedu/discourse-category-custom-fields: Discourse plugin showing how to add custom fields to Discourse categories
Viene installato come “Education Category Custom Field” e le informazioni sull’autore non ci sono:
Cosa ti aspetti che succeda? Non dovrebbe fare nulla senza modifiche.
