Questo è un modo semplice per cambiare un’icona di Discourse globalmente.
-
Fai clic destro sull’icona che vuoi cambiare e seleziona “Ispeziona elemento” o “Ispeziona” (a seconda del 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 che non sono utilizzate di default da Discourse devono essere aggiunte nell’impostazione del sito
svg icon subsetquindi forza l’aggiornamento del browser per vedere le modifiche applicate.
Risultato:

Tutte le icone “link” saranno sostituite con “external-link-tab”.
Se un’icona è utilizzata per più elementi in altre pagine, come i badge, l’icona verrà sostituita anche lì.
Eccezioni
Nota che esiste già un componente tema che ti permette di cambiare l’icona Mi piace. Sto usando questo caso come esempio.
L’icona “cuore”, usata per dare Mi piace, è codificata con altri nomi ('d-liked' e 'd-unliked') e dovrebbe essere trattata diversamente dalle altre icone, quindi per cambiare l’icona
con l’icona
:
api.replaceIcon("d-liked", "thumbs-up");
api.replaceIcon("d-unliked", "thumbs-o-up");
![]()
![]()
ma sulla pagina dei badge l’icona è ancora “cuore”:
quindi per cambiarla anche lì aggiungiamo:
api.replaceIcon("heart", "thumbs-up");
Un altro esempio:
api.replaceIcon("d-watching", "eye");
cambia l’icona di watching:
Vedi qui altre eccezioni che coprono lo stato di tracciamento, espandi/comprimi, notifiche e mi piace ovviamente.
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 tema e condividerli nella nostra categoria Theme component!
Questo documento è controllato in versione - suggerisci modifiche su github.








, meanwhile I’ve tried several other icons, e.g. 