Theme Switcher Rules

Drupalの条件システムを使用して、設定可能なルールに基づいて自動的にテーマを切り替えることができます。

theme_switcher
5,400 sites
48
drupal.org

インストール

Drupal 11, 10, 9, 8 v2.1.0
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
Theme Switcher /admin/config/system/theme_switcher

すべてのテーマ切り替えルールの一覧を、名前、マシン名、割り当てられたテーマ、管理テーマ、ステータスとともに表示します。ルールはドラッグ&ドロップで並び替えて評価優先度を制御できます。各ルールの有効/無効の切り替え、編集、削除へのリンクが提供されます。

Theme Switcherルールを追加 /admin/config/system/theme_switcher/add

新しいテーマ切り替えルールを作成するフォーム。ルール名、ステータス、適用するテーマ、表示条件を設定します。

Theme Switcherルールを編集 /admin/config/system/theme_switcher/edit/{theme_switcher_rule}

既存のテーマ切り替えルールを変更するフォーム。マシン名以外のすべての設定を変更できます。

Theme Switcherルールを削除 /admin/config/system/theme_switcher/delete/{theme_switcher_rule}

テーマ切り替えルールを削除するための確認フォーム。

権限 5
すべてのTheme Switcherルールを管理

作成、表示、編集、削除、並び替えを含む、すべてのテーマ切り替え操作への完全なアクセスを付与します。これは他のすべての権限チェックをバイパスするマスター権限です。

Theme Switcherルールを表示

テーマ切り替えルールの一覧を表示することを許可します。ユーザーはルールを見ることができますが、追加の権限がなければ変更できません。

Theme Switcherルールを作成

新しいテーマ切り替えルールの作成を許可します。ユーザーが追加フォームにアクセスするにはこの権限が必要です。

Theme Switcherルールを編集

既存のテーマ切り替えルールの編集を許可します。ユーザーがルール設定を変更するにはこの権限が必要です。

Theme Switcherルールを削除

テーマ切り替えルールの削除を許可します。ユーザーがシステムからルールを削除するにはこの権限が必要です。

Hooks 1
hook_available_conditions_alter

モジュールがテーマ切り替えルールフォームで利用可能な条件のリストを変更することを許可します。これは、テーマ切り替えのコンテキストで意味をなさない条件を削除したり、カスタムフィルタリングロジックを追加する場合に便利です。