タグ用のプラグインのようなトピックエントランス

こんにちは、初めての Discourse プラグインの開発に取り組んでいます。

概要

タグリンクの動作を少し変更したいと考えています。Discourse 内のどこかでタグをクリックした際、直接そのタグページに遷移するのではなく、2 つの選択肢を表示するようにします。1 つは通常のタグ URL(forum.com/tag/tag-name)、もう 1 つは任意の関連外部ページ(something.site.com/some-name)です。この選択肢は、リストに含まれるタグに対してのみ表示されます。

このリストは、Ruby のハッシュ配列(または JSON)の形式で、プラグインに直接埋め込むか、URL で提供できるようにします(前者の方がリソース面で有利そうです。更新頻度が低いため、リストを更新してプラグインを再ビルドするだけで済みます)。

# Ruby のハッシュ配列
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"}
]

# または

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\"}]"

基本的には、メインのフォーラムページで replies 数をクリックした際に表示されるようなオプションを実現したいと考えています。

私の考え

Discourse の API には、タグに関連する 2 つのメソッドを見つけました。

  1. addTagsHtmlCallback - この場合、topic.tags に値を代入した後、すぐに空の配列に設定する必要があります。これにより tags のレンダリングを防ぎ、カスタムコードを実装できます。
  2. replaceTagRenderer - 2 つ目のメソッドは tag のレンダラーを変更できるため、1 つ目の方法よりも不自然なハックには見えません。

ただし、どちらの場合も raw 文字列を返す必要があります。調べたところ、Ember テンプレートを手動で記述してコンパイルすることはできないようです。もちろん、カスタムリンクをレンダリングし、jQuery を使用した簡単な関数を作成して app/assets/javascripts のルートに配置することも可能ですが、それは Discourse のコードスタイルとは全く異なるアプローチになります。

私の方向性は正しいでしょうか?あらゆるご助言を大歓迎です。

「いいね!」 5

興味のある方のために、私のプラグインの最初のリリースを発表できることを嬉しく思います!

フィードバックをお待ちしています!

「いいね!」 3

ご興味のある方は、最新の更新を確認することをお勧めします。特に以下の点にご注目ください:

皆様にとって良い…日(?)でありますように!

:smiling_imp:

「いいね!」 1

お疲れ様です、@Eiji


このプラグインを Devtalk で使用したいと考えています。Discourse プラグインに詳しい方がいらっしゃいましたら、改善点がないかご確認いただけますでしょうか。よろしくお願いいたします :blush:

「いいね!」 1