Hallo! Ich beabsichtige, meine Discourse-Instanz für ein Rollenspiel zu verwenden. Die User-Portfolio-Theme-Komponente wäre perfekt, um die von den Benutzern eingereichten Dinge anzuzeigen. Insbesondere möchte ich in den Profilen eine Liste der Charaktere, Lore-Einreichungen und Rollenspiel-Szenen eines Benutzers sehen können.
Das einzige Problem ist, dass diese Theme-Komponente nur eine Kategorie gleichzeitig unterstützt. Ich habe versucht, die Kategorie auf 0 für alle Kategorien zu setzen und dann mehrere Tags hinzuzufügen, aber die Portfolio-Seite wurde dadurch leer angezeigt. Daher möchte ich mehrere Instanzen dieser Theme-Komponente bearbeiten und installieren, um mehrere Portfolio-Seiten für diese separaten Elemente zu haben.
Ich habe versucht, die Theme-Komponente herunterzuladen und die Dateien zu bearbeiten (z. B. Instanzen von Portfolio in portfolio_2 zu ändern) und dann die neue Kopie zusätzlich zum Original zu installieren, aber keine von beiden funktioniert.
Wenn beide aktiviert sind…
Es wird nur eine Instanz des Portfolio-Buttons auf der Benutzerkarte angezeigt (portfolio_2)
Es wird nur eine Instanz des Portfolio-Buttons im Profil des Benutzers angezeigt (portfolio_2)
Die portfolio_2-Seite ist im Profil des Benutzers leer.
Ist es möglich, dies zum Laufen zu bringen, oder sollte ich aufgeben?
Danke, das ist ein großartiger Ort zum Nachschauen. Ich denke, ich bevorzuge, dass der Portfolio-Button im horizontalen Menü des Profils (neben Zusammenfassung, Aktivität usw.) ist, aber das größere Problem, das ich habe, ist, dass ich, wenn es mehrere Tags gibt, nach Tags filtern möchte, d. h. Benutzer würden auf Schaltflächen klicken, um nur „Charaktere“ oder „Szenen“ gleichzeitig im Portfolio anzuzeigen.
Ich werde vielleicht versuchen, etwas zu diesem Zweck aus beiden Themenkomponenten zusammenzufügen, aber ich werde zuerst noch etwas herumstöbern. Wenn jemand zusätzliche Ideen hat, bitte teilen!
Ich stimme zu 100 % zu, dass dies ein guter Ort für einen allgemeinen Anwendungsfall ist. Mein spezieller Anwendungsfall ist für eine Community, die sich auf Rollenspiele konzentriert, in der Benutzer regelmäßig nach diesen Informationen suchen würden. Daher möchte ich, dass die Schaltflächen für Charakter- und Szenenverfolgung mit möglichst wenigen Klicks zugänglich und gut sichtbar sind. Ich meine nicht, Ihre Lösung schlecht zu machen!
Okay, ich bin einen anderen Weg gegangen, als zu versuchen, die Portfolio-Plugins zu verwenden. Ich bin mir nicht sicher, ob ich das hier oder in einem neuen Thread posten soll – wenn ja, lassen Sie es mich bitte wissen!
Kann sich jemand das ansehen und mir sagen, was ich falsch mache (und hoffentlich warum / wie ich es beheben kann)? Ich habe Stunden über Stunden damit verbracht, Tutorials zu lesen, zu schreiben und zu bearbeiten, aber ich bin noch ein Anfänger und bin an einem Punkt angelangt, an dem ich nicht mehr weiß, was ich als Nächstes versuchen soll.
Das Ziel: Eine Liste von Themen aus einer bestimmten Kategorie auf der Zusammenfassungsseite eines Benutzers anzeigen.
In diesem Anwendungsfall ist es für ein RPG-Forum, in dem Benutzer Charaktere erstellen, um damit Geschichten zu posten. Ich möchte, dass dieses Plugin anzeigt, welche Charaktere ein Benutzer erstellt hat, damit niemand zu weit graben muss. Alle Charakterbögen werden im selben Forum gespeichert. Also denke ich, ich muss nur eine Themenliste erstellen, die Themen vom richtigen Benutzer und vom richtigen Forum abruft.
Hier ist mein Versuch. Bisher ist die Kopfzeile der Themenliste (Thema/Antworten/Aktivität) an der richtigen Stelle, aber sie wird nicht mit Themen gefüllt.
<script type="text/discourse-plugin" version="0.8">
const ajax = require('discourse/lib/ajax').ajax;
const Topic = require('discourse/models/topic').default;
const User = require('discourse/models/user').default;
// Benötigt ajax, Topic und User
api.registerConnectorClass('above-user-summary-stats', 'character-list', {
// above-user-summary-stats ist der Plugin-Outlet, character-list ist der benutzerdefinierte Komponentenname
setupComponents(args, component) {
const store = getOwner(this).lookup("service:store");
return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
// Zeilen aus summary() im user.js-Modell; versuchen, den Benutzernamen des Benutzers zu finden, dessen Profil wir gerade ansehen, um auf die JSON-Daten der von ihm erstellten Themen zugreifen zu können
let characterList = [];
// leeres Array, um Themen hineinzuschieben
result.topic_list.topics.forEach.category_id(4)(function(topic){
// Themen nur aus der spezifischen Kategorie, die wir wollen
// Ungefähr hier hatte Kris' Tutorial einige Zeilen, um Benutzer mit dem Thema zu verknüpfen. Ich habe sie ignoriert, weil ich keine Benutzer außer dem ursprünglichen Poster benötige, die mit dem Thema angezeigt werden. Ist das wichtig?
//topic.posters.forEach(function(poster){
//poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
//});
characterList.push(Topic.create(topic));
// Themen zur Themenliste hinzufügen
});
component.set('characterList', characterList);
// Richten Sie unsere Komponente mit den Themen aus dem Array ein
}); // Ende ajax
} // Ende setupComponents
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">
<div class="custom-character-list-wrapper">
{{topic-list topics=characterList showPosters=false}}
</div>
</script>