Das ist fantastisch, @angus. Vielen Dank.
Ein Video ist immer schön – ich bin grundsätzlich dafür, Dinge so einfach wie möglich zu gestalten. Ich bin jedoch nicht der Meinung, dass ein Video erforderlich ist, um den Schlüsselwert aus diesen von @angus zusammengestellten Ressourcen zu erhalten. Diese Ressourcen liefern den Code, den du benötigst, um das spezifische Ziel der jeweiligen Ressource zu erreichen (ein funktionierendes benutzerdefiniertes Themenfeld oder ein benutzerdefiniertes Kategorienfeld). Ein Video würde wahrscheinlich nur @angus oder jemand anderem zeigen, wie man die Ressource implementiert, aber das ist unkompliziert, und wir können dies wahrscheinlich einfach hier darlegen.
Um es klarzustellen: Diese Ressourcen sind keine Plugins, die du einfach als Plug-and-Play zu deiner Site hinzufügst, um dein Forum anzupassen. Stattdessen vermitteln sie dir effizient das Verständnis, das du benötigst, um deine eigenen benutzerdefinierten Felder in deinem Plugin zu programmieren.
So habe ich diese Ressourcen verwendet:
Du musst den Namen und den Typ des gewünschten Feldes in config/settings hinzufügen. Der Code in diesen Ressourcen verwendet Variablen, die dort definiert sind. Du musst den Code also danach kaum noch anpassen, damit er in deinem eigenen Plugin funktioniert – die Variablen in plugin.rb und anderswo verweisen auf config/settings und sollten dann funktionieren.
Nachdem du config/settings aktualisiert hast, kannst du einfach dem Code folgen und ihn zu deinem Plugin hinzufügen:
-
Beginne mit dem Code in plugin.rb und füge ihn in die plugin.rb deines eigenen Plugins ein, um das benutzerdefinierte Feld zu erstellen.
-
Gehe dann zum Initializer (unter assets/javascripts/discourse/[custom-field-initializer]), um den Code zu erhalten, der das benutzerdefinierte Feld initialisiert und dir erlaubt, es auf dem Server zu speichern.
-
Erstelle dann das Formular in der View-Schicht, wo der Benutzer (oder deine App, falls die App das Feld automatisch hinzufügt) den Wert für das benutzerdefinierte Feld eingeben kann, hier (assets/discourse/connectors/[plugin-outlet-name]/[deine spezielle Vorlage].hbs).
-
@angus hat dies so eingerichtet, dass du die Formulare für die benutzerdefinierten Felder in einem Plugin-Outlet hinzufügst, das in die Discourse-Vorlage eingefügt wird. Die Einstellungen für dieses Formular findest du hier (assets/javascripts/discourse/lib/[name-des-benutzerdefinierten-felds].js.es6), sodass du dies wahrscheinlich auch anpassen möchtest, damit das Formular funktioniert.
@angus, bitte korrigiere gerne alles, was ich hier gesagt habe.
Sobald ich durch die oben genannten Schritte ein Gefühl dafür bekommen hatte, wie man ein benutzerdefiniertes Feld einrichtet, begann ich, die Dinge etwas weiter anzupassen (zum Beispiel, indem ich kreativer wurde, wie das Formular funktioniert). Dies war jedoch ein äußerst hilfreicher Ausgangspunkt, der mir Stunden an Arbeit erspart hat.
Nachdem ich mich damit beschäftigt hatte, hatte ich einige Fragen (wie ich bereits früher gefragt habe), aber Antworten in Development zu erhalten scheint der hilfreichste Weg zu sein, um von dort aus voranzukommen.