素晴らしいですね、@angus さん。どうもありがとうございます。
動画があると確かに親切ですが、@angus さんがまとめられたこれらのリソースから重要な値を取得するために必須だとは思いません。これらのリソースは、特定の目的(トピックのカスタムフィールドやカテゴリのカスタムフィールドの作成)を達成するために必要なコードを提供しています。動画があれば、おそらく @angus さんや他の誰かがリソースの実装方法について解説することになるでしょうが、それは straightforward(直感的でわかりやすい)なものであり、ここではその手順をまとめて説明できるはずです。
明確にしておくと、これらのリソースは、サイトに追加するだけでフォーラムをカスタマイズする「プラグ・アンド・プレイ」式のプラグインではありません。むしろ、これらはプラグイン内で独自のカスタムフィールドをコーディングするために必要な理解を効率的に得るためのものです。
私がこれらのリソースを利用した方法は以下の通りです:
まず、config/settings に、追加したいフィールドの名前とタイプを追加する必要があります。これらのリソースのコードでは、そこで定義された変数が使用されています。そのため、その後はコードを大幅にカスタマイズする必要はなく、plugin.rb などの場所にある変数が config/settings を参照して動作するようになります。
config/settings を更新した後、以下の手順でコードをプラグインに追加して進めてください:
-
plugin.rb のコードから始め、独自のプラグインの plugin.rb に追加してカスタムフィールドを作成します。
-
次に、initializer(assets/javascripts/discourse/[custom-field-initializer])のコードを確認し、カスタムフィールドを初期化してサーバーに保存できるようにするコードを取得します。
-
次に、ユーザー(またはアプリがフィールドを自動的に追加する場合、そのアプリ)がカスタムフィールドの値を入力できるフォームをビュー層に作成します。こちら(assets/discourse/connectors/[plugin-outlet-name]/[your special template].hbs)が該当します。
-
@angus さんは、Discourse テンプレートに挿入されるプラグインアウトレットにカスタムフィールドのフォームを追加するように設定しています。このフォームの設定はこちら(assets/javascripts/discourse/lib/[custom-field-name].js.es6)にあり、フォームを機能させるためにおそらくこれをカスタマイズしたくなるでしょう。
@angus さん、もし私が誤って記述している箇所があれば、ご指摘ください。
上記の手順を踏んでカスタムフィールドの設定に慣れた後、私はさらにカスタマイズを進めました(例えば、フォームの動作をより創造的にするなど)が、これは非常に有益な出発点であり、数時間の作業を節約してくれました。
これらを一通り行った後、いくつか質問が出ましたが(先ほど質問したように)、それ以降は Dev で回答を得るのが最も効果的な方法だと感じています。