前回のチュートリアル: Developing Discourse Plugins - Part 1 - Create a basic plugin
はじめに: Handlebarsテンプレート
Discourseのクライアントアプリケーションは、Ember.js JavaScriptフレームワークを使用して記述されています。Emberは、すべてのHTMLテンプレートにHandlebarsを使用します。そのリンク先にテンプレート言語に関する優れた入門記事がありますので、必ず熟読してください。
問題点: Discourseユーザーインターフェースへの要素の追加
多くのプラグインは、Discourseのウェブインターフェースを追加および拡張する必要があります。私たちはこれを実現するためのメカニズムを提供しており、handlebarsテンプレートではこれをプラグインアウトレットと呼びます。
Discourseのhandlebarsテンプレートを閲覧すると、次のようなマークアップがよく見られます。
<PluginOutlet @name="edit-topic" />
これは「edit-topic」という名前のプラグインアウトレットを宣言しています。これはテンプレート内の拡張ポイントであり、プラグイン作成者が独自のhandlebarsマークアップを追加するために利用できます。
プラグインを作成する際は、変更したいDiscourseのhandlebarsテンプレート(.hbsファイル内)で <PluginOutlet />を探してください。もし存在しない場合は、私たちに拡張を依頼してください!良いユースケースがあれば喜んで追加します。それをより簡単かつ迅速に行うために、githubでプルリクエストを送信してください!
プラグインアウトレットが存在する場所の例を確認したい場合は、OSXまたはLinuxを使用している場合は次のコマンドを実行できます。
git grep "<PluginOutlet" -- "*.hbs"
また、Discourse Developer Toolbarを有効にすることで、Discourseサイト上にプラグインアウトレットを表示することもできます。ブラウザのコンソールでDiscourseフォーラムでenableDevTools()と入力し、ページ左側に表示されるプラグのアイコンをクリックするだけです。
プラグインアウトレットへの接続
追加したいプラグインアウトレットを見つけたら、それに対応するconnectorを作成する必要があります。コネクタは、ファイル名にconnectors/<outlet name>が含まれるhandlebarsテンプレートにすぎません。
たとえば、Discourseのhandlebarsテンプレートが次のような場合:
<PluginOutlet @name="evil-trout" />
connectors/evil-troutディレクトリ内に作成したhandlebarsファイルはすべて自動的に追加されます。したがって、次の内容でファイルを作成した場合:
plugins/hello/assets/javascripts/discourse/connectors/evil-trout/hello.hbs
内容:
<b>Hello World</b>
Discourseは、テンプレート内のそのポイントに<b>Hello World</b>を挿入します。
ファイル名をhello.hbsと呼んだことに注意してください – ファイル名の最後の部分は重要ではありませんが、すべてのプラグインで一意である必要があります。拡張したい内容を説明する名前にするのが便利です。これにより、将来のデバッグが容易になります。
トラブルシューティング
- コネクタの名前を二重に確認し、プラグイン名と完全に一致していることを確認してください。
詳細情報
シリーズの続き
パート1: プラグインの基本
パート2: このトピック
パート3: サイト設定
パート4: git設定
パート5: 管理者インターフェース
パート6: 受け入れテスト
パート7: プラグインの公開
このドキュメントはバージョン管理されています - 変更の提案はgithubで行ってください。



