Questo è un modo semplice per modificare un’icona di Discourse in modo globale.
-
Fai clic con il tasto destro sull’icona che desideri modificare e seleziona “Ispeziona elemento” o “Ispeziona” (dipende dal browser)
-
Trova il nome dell’icona
-
Cerca una nuova icona qui Find Icons with the Perfect Look & Feel | Font Awesome, ad esempio external-link-alt
-
Personalizza e aggiungi il codice nella scheda
admin > customize > themes > edit code -> JS
// {theme}/javascripts/discourse/api-initializers/init-theme.gjs
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
api.replaceIcon("link", "external-link-tab");
});
- Le icone non utilizzate di default da Discourse devono essere aggiunte nell’impostazione di sito
svg icon subset, quindi è necessario forzare l’aggiornamento del browser per vedere le modifiche applicate.
Risultato:

Tutte le icone “link” verranno sostituite da “external-link-tab”.
Se un’icona viene utilizzata per più elementi in altre pagine, come i badge, l’icona verrà sostituita anche lì.
Eccezioni
Nota che esiste già un componente di tema che consente di modificare l’icona Like. Sto usando questo caso come esempio
L’icona “heart”, usata per dare un Like, è codificata in modo fisso con altri nomi ('d-liked' e 'd-unliked') e deve essere trattata in modo diverso rispetto ad altre icone, quindi per sostituire l’icona
con l’icona
:
api.replaceIcon("d-liked", "thumbs-up");
api.replaceIcon("d-unliked", "thumbs-o-up");
![]()
![]()
ma nella pagina dei badge l’icona è ancora “heart”:
quindi per modificarla in quella pagina aggiungiamo:
api.replaceIcon("heart", "thumbs-up");
Un altro esempio:
api.replaceIcon("d-watching", "eye");
modifica l’icona di osservazione:
Vedi qui altre eccezioni che coprono lo stato di tracciamento, espansione/collasso, notifiche e naturalmente i like.
const REPLACEMENTS = {
"d-tracking": "bell",
"d-muted": "discourse-bell-slash",
"d-regular": "far-bell",
"d-watching": "discourse-bell-exclamation",
"d-watching-first": "discourse-bell-one",
"d-drop-expanded": "caret-down",
"d-drop-collapsed": "caret-right",
"d-unliked": "far-heart",
"d-liked": "heart",
"d-post-share": "link",
"d-topic-share": "link",
"notification.mentioned": "at",
"notification.group_mentioned": "users",
"notification.quoted": "quote-right",
"notification.replied": "reply",
"notification.posted": "reply",
"notification.edited": "pencil-alt",
"notification.bookmark_reminder": "discourse-bookmark-clock",
"notification.liked": "heart",
"notification.liked_2": "heart",
"notification.liked_many": "heart",
"notification.liked_consolidated": "heart",
"notification.private_message": "far-envelope",
"notification.invited_to_private_message": "far-envelope",
"notification.invited_to_topic": "hand-point-right",
"notification.invitee_accepted": "user",
"notification.moved_post": "sign-out-alt",
"notification.linked": "link",
"notification.granted_badge": "certificate",
"notification.topic_reminder": "far-clock",
"notification.watching_first_post": "discourse-bell-one",
"notification.group_message_summary": "users",
"notification.post_approved": "check",
"notification.membership_request_accepted": "user-plus",
"notification.membership_request_consolidated": "users",
"notification.reaction": "bell",
"notification.votes_released": "plus",
"notification.chat_quoted": "quote-right",
};
Ref: discourse/icon-library.js at main · discourse/discourse (github.com)
Sentiti libero di creare altri componenti di tema e condividerli nella nostra categoria Customization > Theme component!
Questo documento è soggetto a controllo di versione - suggerisci modifiche su github.








