Theme Switcher Rules
Drupalの条件システムを使用して、設定可能なルールに基づいて自動的にテーマを切り替えることができます。
theme_switcher
インストール
composer require 'drupal/theme_switcher:^2.1'
概要
Theme Switcher Rulesモジュールは、カスタマイズ可能なルールと条件に基づいてテーマを自動的に切り替える強力なメカニズムを提供します。DrupalのCondition Pluginシステムを活用し、管理者はコントリビュートモジュールが提供するものを含む、利用可能な任意の条件プラグインを使用して複雑なテーマ切り替えロジックを定義できます。
各ルールでは、通常ページと管理ページに異なるテーマを指定でき、ルールは設定可能な順序(重みによる)で評価されます。ルールの条件が満たされると、対応するテーマが適用されます。これにより、コンテンツタイプ、ユーザーロール、言語、リクエストパス、ドメイン、またはシステムで利用可能な他の条件プラグインに基づいて異なるテーマを使用することが可能になります。
このモジュールはフックを通じて拡張可能であり、開発者はルール設定フォームで利用可能な条件をフィルタリングできます。
Features
- ユーザーフレンドリーな管理インターフェースでテーマ切り替えルールを作成
- DrupalのCondition Pluginシステムに基づいて異なるテーマを適用(ユーザーロール、言語、リクエストパス、Nodeタイプなど)
- 同じルール内で管理ルートと非管理ルートに別々のテーマを指定
- ドラッグ&ドロップでルールの順序を変更し、評価優先度を制御
- 拡張可能な条件システム - CoreまたはコントリビュートモジュールのあらゆるCondition Pluginと連携
- ルール一覧から直接有効/無効を素早く切り替え
- 参照されているロールや言語が削除された際の自動クリーンアップ
- 利用可能な条件をフィルタリングするためのフックベースAPI
Use Cases
言語ごとに異なるテーマ
多言語サイトで各言語用のルールを作成します。例えば、言語条件を「English」に設定したルールを作成してモダンな西洋風テーマを選択し、次に「Arabic」用の別のルールをRTL最適化テーマで作成します。ルールは現在のページの言語に基づいて自動的にテーマを切り替えます。
特定のコンテンツタイプ用のカスタムテーマ
特定のコンテンツタイプに専用のテーマを適用します。例えば、「Portfolio」Nodeにはポートフォリオスタイルのテーマを、「Article」Nodeにはブログテーマを使用します。各コンテンツタイプに対してNode Bundle Type条件を持つ別々のルールを作成します。
管理テーマのオーバーライド
特定の条件で異なる管理テーマを使用します。例えば、コンテンツ編集者はサイトのデフォルトとは異なる管理テーマを好むかもしれません。「Content Editor」のユーザーロール条件を持つルールを作成し、管理テーマフィールドのみを設定します。
マルチサイト/ドメイン設定でのドメイン固有テーマ
Domainモジュールなどを使用している場合、ドメイン条件を持つルールを作成して、単一のDrupalインストール内で異なるドメインやサブドメインに異なるテーマを適用できます。
異なるブランディングの制限ページ
特定のパスにシンプルなまたはブランド化されたテーマを適用します。例えば、リクエストパス条件を使用して「/checkout/*」ページにミニマルなテーマを適用したり、「/promotion/*」ページに特別なキャンペーンテーマを適用できます。
ロールベースのテーマ適用
ユーザーロールに基づいて異なる視覚体験を提供します。例えば、プレミアム会員には強化されたテーマを表示し、匿名ユーザーには標準テーマを表示できます。各ティアに対してユーザーロール条件を持つルールを作成します。
Tips
- ルールは重み順に評価されます(小さい重み = 高い優先度)。ルール一覧でドラッグ&ドロップを使用して並び替えてください。
- ルールが効果を持つには、少なくとも1つのテーマ(通常または管理)が設定されている必要があります。
- ルールに条件が設定されていない場合、常に一致します。キャッチオールルールは、より高い重み値で最後に配置してください。
- 「current_theme」条件は無限ループを防ぐために自動的に除外されます。
- 言語条件は、サイトに複数の言語が設定されている場合にのみ表示されます。
- システムからロールや言語が削除されると、モジュールはすべてのルール内の参照を自動的にクリーンアップします。
- コントリビュートモジュール(Domain、Groupなど)のあらゆる条件プラグインを使用して、高度なテーマ切り替えロジックを作成できます。
- 通常のページを変更せずに管理ページのみにルールを適用したい場合は、管理テーマのみを設定してください。
Technical Details
Admin Pages 4
/admin/config/system/theme_switcher
すべてのテーマ切り替えルールの一覧を、名前、マシン名、割り当てられたテーマ、管理テーマ、ステータスとともに表示します。ルールはドラッグ&ドロップで並び替えて評価優先度を制御できます。各ルールの有効/無効の切り替え、編集、削除へのリンクが提供されます。
/admin/config/system/theme_switcher/add
新しいテーマ切り替えルールを作成するフォーム。ルール名、ステータス、適用するテーマ、表示条件を設定します。
/admin/config/system/theme_switcher/edit/{theme_switcher_rule}
既存のテーマ切り替えルールを変更するフォーム。マシン名以外のすべての設定を変更できます。
/admin/config/system/theme_switcher/delete/{theme_switcher_rule}
テーマ切り替えルールを削除するための確認フォーム。
権限 5
Hooks 1
hook_available_conditions_alter
モジュールがテーマ切り替えルールフォームで利用可能な条件のリストを変更することを許可します。これは、テーマ切り替えのコンテキストで意味をなさない条件を削除したり、カスタムフィルタリングロジックを追加する場合に便利です。