Hallo zusammen, dies ist mein erster Beitrag hier. Ich frage mich, wie das Blizzard-Forum die Gesamtzahl der Beiträge eines Benutzers neben seinem Namen anzeigt.
Aber ich glaube, es gibt bessere Möglichkeiten, dies zu tun. Ich habe auch vor, die Benutzer-Badges usw. anzuzeigen. Kann mir jemand dabei helfen? Danke.
<script type="text/discourse-plugin" version="0.1">
api.onPageChange(() => {
// Prüfen, ob ein Element mit der ID 'topic' existiert
if ($('#topic').length > 0) {
// Wenn das 'topic'-Element existiert, das Attribut 'data-user-id' finden
var userId = $('#topic article').data('user-id');
// Prüfen, ob das Attribut 'data-user-id' existiert
if (userId !== undefined) {
// Eine API-Anfrage machen, um Benutzerinformationen zu erhalten
apiReq(`admin/users/${userId}.json`, 'GET')
.then(data => {
// Die Antwortdaten verarbeiten
console.log('Anzahl der Beiträge des Benutzers:', data.post_count);
// Prüfen, ob der Benutzer einen Wert in user_fields["1"] hat
if (data.user_fields && data.user_fields["1"]) {
// Das Benutzerfeld im ersten 'names'-Div anzeigen
displayUserField(data.user_fields["1"]);
}
// Die Anzahl der Beiträge im ersten 'names'-Div anzeigen
displayPostCount(data.post_count);
})
.catch(error => {
// Fehler behandeln
console.error('API-Anfragefehler:', error);
});
} else {
console.log('Kein Attribut mit data-user-id gefunden');
}
} else {
console.log('Kein Element mit der ID "topic" gefunden');
}
});
// Funktion zum Anzeigen des Benutzerfeldes im ersten 'names'-Div
function displayUserField(userFieldValue) {
// Das erste 'names'-Div finden
var firstNamesDiv = $('.names:first');
// Ein Span-Element mit den Klassen 'user-title' erstellen
var userFieldSpan = $('<span></span>').addClass('user-title');
userFieldSpan.text(userFieldValue);
// Das Span-Element an das erste 'names'-Div anhängen
firstNamesDiv.append(userFieldSpan);
}
// Funktion zum Anzeigen der Beitragsanzahl im ersten 'names'-Div
function displayPostCount(postCount) {
// Das erste 'names'-Div finden
var firstNamesDiv = $('.names:first');
// Ein Span-Element mit den Klassen 'user-title' erstellen
var postCountSpan = $('<span></span>').addClass('user-title');
postCountSpan.text(postCount + ' Beiträge');
// Das Span-Element für die Beitragsanzahl an das erste 'names'-Div anhängen
firstNamesDiv.append(postCountSpan);
}
</script>
Ich habe die apiReq-Funktion in einer anderen Komponente
Ich verstehe, Sie nutzen die API teilweise. Sie können diesen Code definitiv verbessern. Geben Sie mir ein paar Minuten, und ich melde mich wieder bei Ihnen.
Um den post_count-Wert beim Anzeigen eines Beitrags oder der Karte eines Benutzers zu erhalten, ist es notwendig, die Daten zu serialisieren, um dieses Feld einzuschließen. Dies kann nur mit Hilfe eines Plugins erreicht werden und die Abhängigkeit von Anfragen pro Benutzer ist keine realistische Lösung.
Probieren Sie es aus. Der JS-Teil befindet sich in assets, wenn Sie ihn sich ansehen möchten.
Eine spezielle Sache, die Sie bei der Verwendung der API möglicherweise übersehen haben, ist die Möglichkeit zur Anpassung über outlets.
Lassen Sie mich wissen, wenn Sie weitere Optionen wünschen.
Ich weiß nicht, ob ich dieses Plugin veröffentlichen soll, da es klein ist, aber hier ist es trotzdem:
Vielen Dank für Ihre Bemühungen. Ich werde es versuchen.
Mein eigentlicher Plan war es, die folgende Funktion zu erreichen:
Zeigen Sie die Beitragsanzahl des Benutzers in Beiträgen und Kommentaren neben dem Avatar an.
Weisen Sie allen Mitgliedern einer Gruppe einen Standardtitel zu (z. B. Administrator).
Zeigen Sie die Vertrauensstufe neben dem Avatar an.
Zeigen Sie eine Auszeichnung neben dem Avatar an.
Zeigen Sie einen Benutzerfeldwert neben dem Avatar an.
Und Optionen sind vom Administrator änderbar.
Ich habe auch geplant, die Beitragsanzahl zu verlinken, damit andere darauf klicken und die Liste der Beiträge sehen können.
Obwohl es ein kleines Plugin ist, glaube ich, dass es sich lohnt, es zu veröffentlichen. Sie können erwägen, neue Funktionen wie vorgeschlagen hinzuzufügen.
Vielen Dank
Entschuldigen Sie die erneute Störung. Nach einiger Nutzung habe ich festgestellt, dass keine Themen enthalten sind. Soweit ich weiß, ist ein Thema auch ein Beitrag.
Themen erstellt ist eine weitere Statistik. Möchten Sie diese Anzahl zur Beitragsanzahl hinzufügen oder einen neuen Text hinzufügen, sodass Sie “Themen: xx, Beiträge: yy” hätten?
Ich versuche eigentlich, so etwas wie postCount + TopicCount zu erhalten.
Ich möchte einfach Themen als Beiträge zählen.
Ich versuche auch, dies nach dem Benutzertitel (falls vorhanden) anzuzeigen. Ich habe versucht, den Plugin-Code zu ändern (nach dem Forken), aber bisher ohne Erfolg.
Ich kann nicht bearbeiten, also habe ich das Plugin gerade installiert und getestet, und es funktioniert sehr gut. Außer auf Mobilgeräten, wo die Gesamtzahl der Beiträge auf der linken Seite des Namens angezeigt wird.