前回のチュートリアル: 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サイト上にプラグインアウトレットを表示することもできます。ブラウザのコンソールで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で行ってください。



