Ich habe jedoch Schwierigkeiten, mehrere benutzerdefinierte Felder zu erstellen. Hat jemand ein funktionierendes Codebeispiel, das er mir verkaufen oder teilen würde? Ich kann es an meine Bedürfnisse anpassen, brauche aber nur ein wenig Hilfe beim Einstieg. Die 2 neuen Felder, die ich benötigen würde, wären Preis (Zeichenkette) und URL (Zeichenkette). Ich würde auch gerne ein Bild-Upload-Feld zum Thema hinzufügen, habe aber noch nichts Derartiges gesehen.
Ich helfe Ihnen gerne weiter. Ich habe kürzlich ein Plugin erstellt, in dem ich ein benutzerdefiniertes Themafeld verwendet habe (Discourse Chain Topics Plugin).
In meinem Plugin habe ich zwei zusätzliche Felder für jedes Thema vom Typ Integer erstellt. Ähnlich können Sie beliebig viele Felder hinzufügen. Am Ende sind die benutzerdefinierten Felder für Themen/Benutzer ein JSON-Objekt, in dem jedes von Ihnen hinzugefügte Feld als Schlüssel/Wert im JSON-Objekt aufgeführt wird. Dabei ist der Schlüssel der Feldname und der Wert der Wert.
Das von Ihnen oben erwähnte Beispiel (das mir auch geholfen hat) ist so aufgebaut, dass Sie im Admin-Panel ein zusätzliches Feld hinzufügen, bei dem Sie dessen Typ und Namen auswählen. Sie müssen die zusätzlichen Felder jedoch nicht unbedingt mit dem Admin-Panel verknüpfen. Ähnlich können Sie beliebig viele Felder hinzufügen (ich bin mir nicht sicher, wie sich dies auf die Leistung auswirken könnte).
Schließlich können Sie mich jederzeit für jegliche Unterstützung kontaktieren, die Sie benötigen. Meine Kontaktdaten finden Sie auch unter https://ghassan.blog.
Hallo, ich hatte das gleiche Problem… jetzt habe ich herausgefunden, wie man es mit mehreren benutzerdefinierten Feldern realisiert!
Über das Setup der plugin.rb hinaus benötigen Sie auch einzelne Dateien (JS-Initialisierer und die .hbs- und .hbr-Vorlagen) für jedes Feld!
Das Plugin discourse-topic-custom-fields hat einen Ordner namens
plugins/discourse-topic-custom-fields/assets/javascripts/discourse/initializers
in diesem Ordner gibt es eine Datei namens: topic-custom-field-initializer.js.es6
für ein einzelnes Feld können Sie diese Datei einfach bearbeiten, aber für mehrere Felder sollten Sie andere Dateien wie diese haben,
topic-custom-field-url-initializer.js.es6 und topic-custom-field-price-initializer.js.es6
in jeder Datei haben Sie 3 Zeilen mit einer Variablen api, die eine Methode registerConnectorClass aufruft. Sie müssen den zweiten Parameter ändern und ein Suffix hinzufügen, um einen exklusiven Namen für jede Feldklasse in jeder der 3 Zeilen zu haben.
vergessen Sie nicht, den Exports-Namen in jeder Datei zu ändern (direkt nach “exports default {…”).
Auch für die hbs- und hbr-Dateien müssen Sie getrennte Dateien für jedes Feld erstellen. Sie müssen nur dieselben Dateien kopieren und einfügen und für jede Dateinamen ein Suffix hinzufügen, z. B.: