Benutzerdefinierte Felder erstellen und konfigurieren

Ich denke, Sie könnten sie mit der Rails-Konsole neu anordnen. Ich habe mich entschieden, die Felder mit ihren IDs einzugeben, da es schwieriger ist, einen Namen ohne Tippfehler einzugeben

ids_in_order = [3, 7, 8, 5, 1, 2]

ids_in_order.each_with_index do |id, index|
  UserField.find(id).update!(position: index)
end
1 „Gefällt mir“

Hier ist, wie das Fenster „Kategorien neu anordnen“ aussieht. Ich vermute, wenn dies in Discourse existiert, könnte es auch eine Möglichkeit geben, es für Benutzerfelder zu verwenden?

1 „Gefällt mir“

Ich glaube nicht, aber ich habe kürzlich eine Themenkomponente geschrieben, die die ursprüngliche Anzeige benutzerdefinierter Felder auf der Benutzerkarte und den Profilseiten ausblendet und sie dann erneut rendert, wobei einige optional als HTML-sicher gemacht werden (sie fügen über die API Informationen zu einem benutzerdefinierten Feld hinzu, das Benutzer nicht bearbeiten können). Ich denke, dieselbe Idee könnte verwendet werden, um ein Reihenfolgenfeld zu den benutzerdefinierten Feldern hinzuzufügen, um die Reihenfolge zu ändern, in der sie auf der Karte und/oder dem Profil angezeigt werden.

Ich denke, Sie können die vorhandenen Methoden zum Neuordnen der Benutzerfelder verwenden. Es ist etwas unpraktisch, dass Sie das Menü nach jeder Positionsänderung erneut öffnen müssen. Das ist etwas lästig, wenn man mehrere Positionen verschiebt.

Aber eine Komponente, die die Schaltflächen immer sichtbar macht, oder ein Kontrollkästchen für einen „Neuordnungsmodus“ oben, das sie außerhalb des Menüs sichtbar macht, könnte die Erfahrung bereits verbessern.

1 „Gefällt mir“

Oh. Lustig. Ja. Ups. Das ist um einiges besser als meine Idee. :rofl:

Ich habe ein benutzerdefiniertes Feld und habe es als durchsuchbar eingestellt. Auf der Benutzerseite /u gibt es jedoch nur das Suchfeld „Nach Benutzernamen filtern“. Wenn ich nach dem Inhalt des benutzerdefinierten Feldes suche, werden keine Ergebnisse angezeigt.

Ich kann die Werte in der Liste sehen (ich habe die Spalte im Anpasser aktiviert), also weiß ich, dass diese Werte eindeutig existieren.

Was mache ich falsch?

Seltsamerweise sind die Werte des benutzerdefinierten Feldes Links, z. B. u?cards=no&name=Female&order=likes_received, und wenn man darauf klickt, wird eine Suche nach dem Wert im Feld name ausgeführt. Dabei wird nichts gefunden.

Hier sind die Einstellungen für das Feld:

Außerdem (ich weiß nicht, ob das ein Hinweis ist): Wenn ich nach dieser benutzerdefinierten Spalte sortiere, egal ob aufsteigend oder absteigend, stehen immer Benutzer mit leeren Feldern oben auf der Liste (verschiedene Benutzer). Nur eine kleine Anzahl von Benutzern hat Inhalte in diesem Feld, aber ich hätte erwartet, dass alle leeren Einträge entweder ganz oben oder ganz unten stehen, nicht beides.

Erstellen eines Discourse-Multiselect-Benutzerfelds mit vielen Optionen

Die Eingabe von Dutzenden oder Hunderten von Auswahlmöglichkeiten einzeln im benutzerdefinierten Feldeditor von Discourse ist mühsam. Ich arbeite an einem multifunktionalen CLI-Tool für Discourse namens dsc, das Operationen wie diese einfacher und deterministischer macht, indem lokale Dateien verwendet werden. Eine der vielen Dinge, die es tun kann, ist die Bearbeitung benutzerdefinierter Benutzerfelder.

dsc kann ein neues benutzerdefiniertes Benutzerfeld aus einer YAML-Datei erstellen, einschließlich der gesamten geordneten Optionsliste in einem einzigen Vorgang. Der Befehl ucf ist ein Alias für user-field.

Zuerst listen Sie Ihre vorhandenen benutzerdefinierten Benutzerfelder auf:

dsc ucf list myforum --format yaml

Dies zeigt deren IDs, Typen, Optionen und Einstellungen an.

Das Feld vorbereiten

Erstellen Sie user-fields.yaml und ersetzen Sie die Quell-URL, die Frage und die Optionen durch Ihre eigenen. Stellen Sie sicher, dass Ihre YAML-Datei gültig ist – es ist leicht, Fehler zu machen.

Hier ist zum Beispiel ein Mehrfachauswahl-Feld für Länder mit 25 Optionen:

version: 1
source: https://forum.example.org
user_fields:
  - name: Countries
    description: In welchen Ländern arbeiten Sie? Wählen Sie alle zutreffenden aus.
    field_type: multiselect
    editable: true
    requirement: on_signup
    show_on_profile: false
    show_on_signup: true
    show_on_user_card: false
    searchable: false
    options:
      - Argentinien
      - Australien
      - Brasilien
      - Kanada
      - China
      - Dänemark
      - Ägypten
      - Frankreich
      - Deutschland
      - Indien
      - Irland
      - Italien
      - Japan
      - Kenia
      - Mexiko
      - Niederlande
      - Neuseeland
      - Nigeria
      - Norwegen
      - Singapur
      - Südafrika
      - Spanien
      - Schweden
      - Vereinigtes Königreich
      - Vereinigte Staaten

Dadurch wird ein Feld mit 25 Optionen erstellt, anstatt 25 separater Felder. Sie können die Liste nach Bedarf erweitern – ich habe diese Vorgehensweise erfolgreich für ein Feld mit mehr als 250 Optionen angewendet.

Vorschau, Erstellen und Überprüfung

dsc ucf push --dry-run myforum user-fields.yaml
# Überprüfen Sie den Plan und die vollständige YAML-Datei, bevor Sie sie anwenden.
dsc ucf push myforum user-fields.yaml
dsc ucf show myforum <field-id> --format yaml

Ich freue mich über Feedback zu dsc, einschließlich Ideen für fehlende Funktionen. Bitte erstellen Sie Issues im GH-Repo.

2 „Gefällt mir“