サイトの体験をテーマ開発者が制御できる新しい方法を追加しました。テーマ可能なサイト設定により、テーマはDiscourseコアで定義されたサイト設定の限定されたグループをオーバーライドできます。![]()
テーマ可能なサイト設定の違いは何ですか?
すでにテーマ設定とテーマモディファイアの概念がありますが、テーマ可能なサイト設定とはどのように違うのでしょうか?簡単な概要を以下に示します。
- テーマ設定 - テーマやコンポーネント内のUIと機能を制御するために使用されるカスタム設定であり、構成オプションを提供します。これらはDiscourseコアの機能を変更することはできません。
- テーマモディファイア - テーマまたはコンポーネントが、プラグインの構築に代わるものとして、Discourseコアの選択されたサーバーサイド機能を変更できるようにします。
テーマ可能なサイト設定(新規) - テーマ(コンポーネントではない)が、コアサイト設定の小さなサブセットをオーバーライドできるようにします。これらは一般的にUIの一部やその他のマイナーな機能を制御します。これにより、テーマはサイト全体の体験をより細かく制御できるようになります。
テーマ可能なサイト設定は、オーバーライドするサイト設定とまったく同じデータ型と値を持っています。あらゆる目的において、データベース内のサイト設定の値は関係なくなります。なぜなら、各テーマがこの値を個別に制御するようになったからです。
管理者はテーマ可能なサイト設定をどのように表示および変更できますか?
管理者は2つの場所でテーマ可能なサイト設定を表示および変更できます。まず、各個別のテーマページには、テーマによって定義されたテーマ設定を示す他のセクションの上に、「テーマがオーバーライドできる設定」というセクションが追加されました。
ドットは、サイト設定のデフォルト値から変更された値を示しています。「リセット」を押すと、テーマサイト設定の値がサイト設定のデフォルト値と一致するように変更されます。
管理者がこれらの設定を表示できる2番目の場所は、新しいページ /admin/config/theme-site-settings です。
ここから管理者は、すべてのテーマ可能なサイト設定、デフォルトのサイト設定値、およびこの値をオーバーライドしているテーマを確認できます。テーマ名にカーソルを合わせると、UIにそのテーマが設定した値が表示されます。
既存のサイト設定の変更はどうなりますか?
サイトで enable_welcome_banner または search_experience をデフォルト値から変更した場合、これらの値はサイトにインストールされているすべてのテーマに自動的に移行されるため、メンバーのUIには何も変更はありません。
どこで定義されていますか?
テーマ可能なサイト設定は、コアの config/site_settings.yml ファイルで定義されます。各テーマ可能なサイト設定には、themeable: true オプションが定義されています。
現時点では、テーマ可能なサイト設定は enable_welcome_banner と search_experience の2つだけですが、将来的にはさらに多くのサイト設定をテーマ可能にする可能性があります。
テーマ作成者はデフォルト値をどのように制御できますか?
テーマ作成者は、about.json ファイルの theme_site_settings キーの下でテーマサイト設定のオーバーライドを定義できます。
"theme_site_settings": {
"enable_welcome_banner": false
}
ここにある値はデータベースに保存され、テーマに関連付けられます。値が保存されると、テーマが更新されたときの about.json ファイルの theme_site_settings の変更は、管理者がその間に設定を変更したかどうかを判断できないため、現在保存されているデータベースの値には影響しません。
テーマ可能なサイト設定の制限は何ですか?
テーマ可能なサイト設定は、UIの要素を制御するためにのみ意図されており、その値を取得する際にはテーマIDが必要なため、これらの制限が適用されます。
- テーマ可能なサイト設定はSidekiqジョブでは使用できません。
- テーマ可能なサイト設定はマークダウンルールでは使用できません。
- テーマ可能なサイト設定は、テーマIDをキーとしてクライアントサイト設定とは別にキャッシュされます。
- テーマ可能なサイト設定は、アプリケーションプリローダーを使用してクライアントの
siteSettingsサービス上のキーをオーバーライドします。 SiteSetting.client_settings_jsonにはテーマ可能なサイト設定は含まれません。代わりに、テーマIDを指定してSiteSetting.theme_site_settings_jsonを呼び出すことができます。
一般的なルールとして、テーマサイト設定はUIの一部を制御する単純な設定のみに使用され、サーバーサイドのものは含まれません。

