Themen-Eingabe wie Plugin für Tags

Hallo, ich arbeite an meinem ersten Discourse-Plugin.

Die Idee

Wir möchten das Verhalten der Tag-Links leicht ändern: Wenn ein Tag irgendwo in Discourse geklickt wird, sollen statt einer direkten Weiterleitung zwei Optionen angezeigt werden; die normale Tag-URL (forum.com/tag/tag-name) oder eine von uns gewählte externe Seite (something.site.com/some-name). Diese Option soll nur für Tags in der Liste angezeigt werden.

Die Liste wird als Ruby-Array von Hashes (oder JSON) vorliegen und kann entweder direkt in das Plugin eingebettet oder über eine URL bereitgestellt werden. (Ersteres scheint ressourcenschonender zu sein – wir können die Liste einfach aktualisieren und das Plugin bei Bedarf neu bauen, da die Updates nicht allzu häufig sein werden.)

# Ruby-Array von Hashes
array = [
  {forum_tag: "discourse", external_slug: "discourse"},
  {forum_tag: "dc", external_slug: "discourse"},
  {forum_tag: "xenforo", external_slug: "xenforo"},
  {forum_tag: "xf", external_slug: "xenforo"}
]

# ODER

array.to_json
=> "[{\"forum_tag\":\"discourse\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"dc\",\"external_slug\":\"discourse\"},{\"forum_tag\":\"xenforo\",\"external_slug\":\"xenforo\"},{\"forum_tag\":\"xf\",\"external_slug\":\"xenforo\"}]"

Wir möchten im Wesentlichen die Möglichkeit haben, so zu verfahren wie beim Klicken auf die replies-Anzahl auf der Hauptforumseite:

Meine Überlegungen

Ich habe 2 Methoden in der Discourse-API im Zusammenhang mit Tags gefunden:

  1. addTagsHtmlCallback – In diesem Fall müsste ich topic.tags direkt nach der Zuweisung an eine andere Variable auf ein leeres Array setzen. Auf diese Weise würde ich das Rendern von tags verhindern und meinen eigenen Code schreiben können.

  2. replaceTagRenderer – Die zweite Methode ermöglicht es mir, das tag-Rendering zu ändern, was weniger „hacky

Für alle Interessierten freue ich mich, die erste Version meines Plugins ankündigen zu können!

Ich freue mich auf euer Feedback!

Für alle Interessierten empfehle ich, die neuesten Änderungen zu prüfen, insbesondere:

Guten … Tag (?) für alle!

:smiling_imp:

Schön gemacht, @Eiji!


Wir hoffen, dieses Plugin auf Devtalk einzusetzen… Könnte sich jemand, der Erfahrung mit Discourse-Plugins hat, das ansehen und prüfen, ob Verbesserungen möglich sind? Wir wären dankbar :blush: