前回のチュートリアル: Developing Discourse Plugins - Part 2 - Connect to a plugin outlet
サイト設定
管理者権限を持つDiscourseの/admin/site_settingsにアクセスすると、設定項目の一覧が表示されます。標準では、Discourseのインストールに最適な設定が提供されていますが、ユーザーがフォーラムを思い通りに調整したいと考えることも理解しています。
プラグインが非常に単純でない限り、プラグインのユーザーが機能を変更および設定するために使用できる設定を追加したいと思うでしょう。幸いなことに、これはかなり簡単に行えます!
config/settings.yml
まず、プラグインフォルダー内にconfig/settings.ymlを作成する必要があります。このファイルには、プラグインが必要とするすべての設定が記述されます。以下に例を示します。
plugins:
awesomeness_enabled:
default: true
client: true
awesomeness_max_volume:
default: 10
client: true
ファイルはYAML形式である必要があります。YAMLは非常にデリケートな場合があるため、Discourseが設定の読み込みに問題がある場合は、YAMLintのようなツールでYAMLを検証してみることをお勧めします。
例のファイルを詳しく説明します。最上位レベルはpluginsであり、これらの設定をサイト設定の「プラグイン」の下に表示するようにDiscourseに伝えます。
その後、awesomeness_enabledとawesomeness_max_volumeの2つの設定が宣言されます。Discourseはデフォルトから設定の型を推論するため、awesomeness_enabledはブール値、awesomeness_max_volumeは数値になります。
client: trueを理解することは重要です。Discourseは、Ruby on Railsで書かれたサーバーサイドのAPIと、Ember.jsで書かれたクライアントサイドのアプリケーションという2つの主要なアプリケーションで構成されています。デフォルトでは、client: trueを追加しない限り、設定をEmber.jsクライアントアプリに公開しません。APIキーのような一部の設定はプライベートであり、エンドユーザーに送信されるべきではないため、このようにしています。また、すべて設定をクライアントに送信すると、エンドユーザーにとってダウンロード量が膨大になる可能性があります!
私たちの例では、両方の設定がサーバーサイドの世界だけでなく、JavaScriptの世界でもアクセスできるようにしたいと考えています。
重要な2番目のステップ
新しく追加したサイト設定を使用する前に、それらの翻訳を追加する必要があります。Discourseは多くの言語をサポートしているため、追加するテキストは他の言語に翻訳可能である必要があります。
英語で設定の翻訳を作成しましょう。
config/locales/server.en.yml
en:
site_settings:
awesomeness_enabled: "Is this plugin awesome?"
awesomeness_max_volume: "What is the maximum volume possible?"
そのファイルに追加したラベルは、管理セクションに表示されます。その設定が何をするのかをできるだけ明確にすることは良い考えです。
設定を「有効設定」として宣言する
サイト設定ができたので、Discourseにそれが機能のオンとオフを切り替えるものであることを伝える必要があります。
plugin.rbファイルを開き、メタデータコメントの下に次の行を追加します。
enabled_site_setting :awesomeness_enabled
設定ボタンが/admin/pluginsで正しく機能するように、すべて他の設定を"awesomeness_"で始めるようにしてください。
新しい設定へのアクセス
まず、設定を有効にするために開発サーバーを再起動する必要があります。再起動すると、設定がサーバー側とクライアント側のコードで利用可能になるはずです。
サイト設定はほとんどのJavaScriptオブジェクトに自動的に挿入されるため、Component、Controller、Route、View、またはModelを宣言している場合は、単にthis.siteSettings.awesomeness_enabledを使用することでサイト設定にアクセスできるはずです。ほとんどのハンドルバーテンプレートでも{{siteSettings.awesomeness_enabled}}と言うことができ、設定値が表示されます。
このシリーズではまだRubyについてはあまり触れていませんが、Rubyアプリケーションでサイト設定にアクセスしたい場合は、次のように行うことができます: SiteSetting.awesomeness_enabled
さあ、プラグインにカスタム設定を追加しに行きましょう!
シリーズの続き
パート1: プラグインの基本
パート2: プラグインアウトレット
パート3: このトピック
パート4: gitの設定
パート5: 管理インターフェース
パート6: 受け入れテスト
パート7: プラグインの公開
このドキュメントはバージョン管理されています - 変更の提案はgithubで行ってください。




