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:
-
addTagsHtmlCallback– In diesem Fall müsste ichtopic.tagsdirekt nach der Zuweisung an eine andere Variable auf ein leeres Array setzen. Auf diese Weise würde ich das Rendern vontagsverhindern und meinen eigenen Code schreiben können. -
replaceTagRenderer– Die zweite Methode ermöglicht es mir, dastag-Rendering zu ändern, was weniger „hacky
