Ich wollte die Möglichkeit haben, auch benutzerdefinierte SVGs als Symbol neben einer Erwähnung zu verwenden, etwas, das ich auf Guilded für das Personal gesehen habe und das ich dort haben wollte, aber nicht haben konnte – noch ein Grund, warum ich Discourse so sehr mag, ist, dass ich tatsächlich etwas zusammenbasteln kann, das funktionieren könnte, anstatt darauf zu hoffen und darauf zu warten, dass die Entwickler es hinzufügen.
Also habe ich die folgende Lösung zusammengebastelt. Sie ist keineswegs narrensicher, erfordert wahrscheinlich, dass die von Ihnen hochgeladene SVG eine SCSS-Variable hat, die mit svg beginnt, und dennoch scheint sie für mich jetzt gut genug zu funktionieren 
Wenn jemand diesen Code nehmen und damit weitermachen möchte, ihn schicker machen möchte, wäre ich dankbar!
Mögliche Verbesserungen
- Funktionieren für alle SVG-Icons, d. h. alle Discourse-Icons und alle, die von hochgeladen werden und nicht mit
svg beginnen.
- Den Code aufräumen.
- Das Styling verbessern, da ich das CSS irgendwie zusammengebastelt habe, um zu funktionieren, und es möglicherweise nicht in allen Situationen funktioniert.
Unabhängig davon hier ein Beispiel für eine Erwähnung, bei der ich das benutzerdefinierte Symbol für Emotional Self-Defense als Symbol für die Erwähnung von Personal verwende:

Hier ist der Code, den ich hinzugefügt habe:
header.html
// SVG-Icons als Option hinzufügen, solange sie in Assets enthalten und hochgeladen sind
// Erstellt ein Objekt aller Assets und durchläuft es, um herauszufinden, welche Links das data-emoji-Attribut haben,
// das dem Variablennamen des Assets entspricht, und fügt dann die URL dafür hinzu.
// Objekt in Schlüssel-Array konvertieren
const keys = Object.keys(settings.theme_uploads);
// Alle Schlüssel ausgeben
console.log(keys);
// Über Objekt iterieren
keys.forEach((key, index) => {
console.log(`${key}: ${settings.theme_uploads[key]}`);
api.decorateCooked($elem => {
var url = settings.theme_uploads[key];
console.log("key: " + key);
console.log("index: " + index);
console.log("url: " + url);
console.log(JSON.stringify(settings.theme_uploads));
$elem
.find("a[data-emoji^='" + key + "']")
.css("--svg-icon", "url('" + url + "')");
}
);
});
common.scss
@if $show-after-mention == "true" {
[data-emoji^="svg"]:after {
content: 'hey ';
color: transparent;
height:5px;
width:15px;
background: var(--svg-icon) no-repeat center;
background-size: contain;
display: inline;
}
} @else {
[data-emoji^="svg"]:before {
content: 'hey ';
color: transparent;
height:5px;
width:15px;
background: var(--svg-icon) no-repeat center;
background-size: contain;
display: inline;
}
}
Dies erfordert auch, dass Sie:
- Einen Ordner
/assets erstellen
svg-Dateien im Ordner /assets hinzufügen, z. B. /assets/esd-heart.svg
- Die Datei
about.json aktualisieren, um mit etwas wie den folgenden auf diese Assets zu verweisen:
"assets": {
"svg_esd_heart": "assets/esd-heart.svg"
}