Это простой способ глобально изменить иконку в Discourse.
-
Щелкните правой кнопкой мыши по иконке, которую хотите изменить, и выберите «Исследовать элемент» или «Исследовать» (зависит от браузера).
-
Найдите имя иконки.
-
Найдите новую иконку здесь: Find Icons with the Perfect Look & Feel | Font Awesome, например, external-link-alt.
-
Настройте и добавьте код во вкладку
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");
});
- Иконки, которые по умолчанию не используются в Discourse, необходимо добавить в настройку сайта
svg icon subset, а затем принудительно обновить браузер, чтобы увидеть примененные изменения.
Результат:

Все иконки «link» будут заменены на «external-link-tab».
Если иконка используется для нескольких элементов на других страницах, например, для значков (badges), она будет заменена и там.
Исключения
Обратите внимание, что уже существует компонент темы, позволяющий изменить иконку «Нравится». Я использую этот случай в качестве примера.
Иконка «сердце», используемая для отметки «Нравится», жестко закодирована с другими именами ('d-liked' и 'd-unliked') и должна обрабатываться иначе, чем другие иконки. Поэтому, чтобы заменить иконку
на
:
api.replaceIcon("d-liked", "thumbs-up");
api.replaceIcon("d-unliked", "thumbs-o-up");
![]()
![]()
но на странице значков иконка остается «сердце»:
поэтому, чтобы изменить её на этой странице, мы добавляем:
api.replaceIcon("heart", "thumbs-up");
Еще один пример:
api.replaceIcon("d-watching", "eye");
меняет иконку наблюдения:
Здесь приведены другие исключения, касающиеся статуса отслеживания, сворачивания/разворачивания, уведомлений и отметок «Нравится».
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",
};
См.: discourse/icon-library.js at main · discourse/discourse (github.com)
Не стесняйтесь создавать другие компоненты тем и делиться ими в нашей категории Customization > Theme component!
Этот документ находится под контролем версий — предложите изменения на github.








