Ich versuche, den vollständigen Namen eines Benutzers in die Handlebars-Vorlage für das hervorgehobene Thema einzufügen. Es bereitet mir keine Probleme, einen Testwert in die Vorlage einzubringen, aber ich kann den gewünschten Wert scheinbar nicht erhalten. Im folgenden Code würde ich idealerweise realname mit dem vollständigen Namen des Benutzers als Wert anstelle von „Test" zurückgeben:
<script type="text/discourse-plugin" version="0.8">
var FeaturedTopicView = require('discourse/components/featured-topic').default;
FeaturedTopicView.reopen({
fullName: function() {
// Hole den Benutzernamen des letzten Posters
let username = this.topic.last_poster.username;
// Versuche, den vollständigen Namen des Benutzers mit dem oben festgestellten Benutzernamen zu erhalten
let realname = Discourse.User.findByUsername(username).then(function(result) {
return result.name;
}).then(function(result) {
// Das liefert uns die echten Namen! Aber sie sind außerhalb dieses Bereichs nicht zugänglich
console.log(result);
});
return "Test";
}.property()
});
</script>
Der Benutzer, der mich interessiert, ist der letzte Poster, sodass es in diesem Fall so aussieht, als hätte ich nur this.topic.last_poster zur Verfügung. Dies hat drei damit verbundene Werte: username, id und avatar_template. Leider brauche ich eigentlich name.
Ich hatte gehofft, es gäbe eine Möglichkeit, den vollständigen Namen eines Benutzers mithilfe von id oder username nachzuschlagen. Ich bin mit dem Konzept der Promises und ihrer Verwendung nicht besonders vertraut, aber ich habe mit Discourse.User.findByUsername(username) gewissermaßen ein Konzept bewiesen. Ich kann die benötigten vollständigen Namen erfolgreich mit console.log ausgeben, aber sie scheinen in diesem Bereich gefangen zu sein.
Ich könnte den gesamten Ansatz falsch wählen, aber dies war mein bester Versuch basierend auf meinem aktuellen Wissen.
Jede Hilfe oder jeder Vorschlag wäre sehr willkommen! Bitte lass mich wissen, falls ich etwas näher erläutern muss.