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 https://fontawesome.com/icons?d=gallery, 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 del sito
svg icon subset, quindi forza l’aggiornamento del browser per vedere le modifiche applicate.
Risultato:

Tutte le icone “link” saranno sostituite con “external-link-tab”.
Se un’icona è usata per più elementi in altre pagine, come i badge, l’icona sarà 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 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 tramite versione - suggerisci modifiche su github.



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