Block Exclude Pages
Block の表示設定に「!」プレフィックス記法を使用したページ除外フィルター機能を追加します。
block_exclude_pages
インストール
composer require 'drupal/block_exclude_pages:^2.2'
概要
Block Exclude Pages は、サイト管理者がワイルドカードパターンから特定のページを除外できるようにすることで、Drupal のネイティブな Block 表示システムを強化します。これは、パターンに一致するほとんどのページで Block を表示したいが、そのパターン内の特定のページでは非表示にしたいという一般的な問題を解決します。
このモジュールは、Block の表示評価プロセスをインターセプトし、「!」で始まるパスを除外として処理します。表示設定が「リストされたページで表示」の場合、除外パスはワイルドカードに一致していても Block を非表示にします。逆に、「リストされたページで非表示」の場合、除外パスは非表示パターンに一致していても Block を表示します。
この軽量モジュールは設定ページを必要とせず、ヘルプテキストの追加と表示条件の動作変更により、Drupal の既存の Block 設定インターフェースにシームレスに統合されます。
Features
- 「!」プレフィックス記法を使用して Block 表示のワイルドカードから特定のページを除外
- 「リストされたページで表示」と「リストされたページで非表示」の両方の表示モードで動作
- パスエイリアスをサポート - 内部パスと URL エイリアスの両方にマッチ
- 言語対応のパス処理 - URL の言語プレフィックスを自動的に処理
- Drupal Core の RequestPath 条件プラグインを拡張バリデーションで強化
- 追加の管理ページなしで既存の Block 設定インターフェースにシームレスに統合
- ネストされたワイルドカードを含む複雑な除外パターンをサポート(例:!/user/jc/*)
Use Cases
特定のユーザープロファイルを除くすべてのユーザーページでサイドバー Block を表示
すべてのユーザー関連ページ(/user/*)でプロモーションサイドバー Block を表示したいが、管理者プロファイルでは非表示にしたい場合。Block の表示設定で /user/* を設定してすべてのユーザーページで表示し、!/user/1 と !/user/admin を追加して管理者ユーザーページを除外します。
例外付きでセクションページにコンテンツ Block を表示
企業サイトに /offices/human-resources/* の人事セクションがあり、マネージャー専用ページでは特定の Block を非表示にする必要がある場合。表示設定を /offices/human-resources/current-employees/* に設定し、!/offices/human-resources/current-employees/manager-documents と !/offices/human-resources/current-employees/manager-resources で除外します。
特定のプロモーションページを除くすべての場所で広告 Block を非表示
「リストされたページで非表示」モードで /* を使用してすべての場所で Block を非表示にする場合、「!/」プレフィックスパターンを使用して Block を表示する例外を作成できます。例えば、/* で非表示にし、!/promotions と !/special-offers で表示します。
除外付きの言語に依存しない Block 表示
多言語サイトでは、モジュールはマッチング前にパスから言語プレフィックスを自動的に除去します。/products/* と !/products/discontinued を設定すると、/en/products/discontinued と /es/products/discontinued の両方で正しく動作します。
Tips
- パスには常に先頭のスラッシュを使用してください(例:user/profile ではなく /user/profile)
- 除外パターンは「!」の後にパスを続けます(例:!/user/jc)
- 除外パターンでもワイルドカードが使用できます - パス以下のすべてのページを除外するには !/user/jc/* を使用
- <front> トークンも !<front> を使用して除外できます
- 設定の明確さのために、より具体的な除外パターンはワイルドカードパターンの後に配置してください
- 設定後、さまざまなページで Block を表示して表示ルールをテストしてください
Technical Details
Hooks 4
hook_help
除外パス機能の使用方法を説明するヘルプページのコンテンツを提供します
hook_form_block_form_alter
Block 設定フォームを変更して、ページ表示フィールドに除外パス構文についてのヘルプテキストを追加します
hook_block_access
Block の表示を評価し、除外パターンを処理する Core hook。現在のパスが除外パターンにマッチするかどうかをチェックし、それに応じて表示条件を反転させます
hook_condition_info_alter
Core の RequestPath 条件プラグインクラスを、「!」プレフィックスバリデーションをサポートするモジュールの拡張バージョンに置き換えます