Configurable Views Filter Block

デフォルトのViews露出フィルターブロックをインスタンスごとの設定オプションで拡張し、各ブロックインスタンスで特定のフィルターのみを表示できるようにします。

configurable_views_filter_block
1,306 sites
24
drupal.org
gui
Drupal 9 Drupal 10 Drupal 11

インストール

Drupal 11, 10, 9 v1.0.0
composer require 'drupal/configurable_views_filter_block:^1.0'

概要

Configurable Views Filter Blockは、Drupalコアの Views露出フィルターブロック機能を拡張し、サイトビルダーが露出フィルターフォームの複数インスタンスを作成できるようにします。各インスタンスは、利用可能なフィルターのカスタムサブセットのみを表示します。

このモジュールは、個々の露出フィルター、リセットボタン、ソートオプション、ページャーコントロールに対するきめ細かな表示制御を提供します。さらに、Views露出フィルターが折りたたみ可能なフィールドセット(details要素)にグループ化されている場合、このモジュールは特定のインスタンスでよりクリーンな表示のためにプレーンなコンテナに変換できます。

これは、フィルターをページの複数の領域に分散させたい複雑なレイアウトや、Views露出フィルターをファセット検索ブロックと組み合わせる場合に特に便利です。

Features

  • 異なるフィルター表示設定を持つ同一Views露出フィルターブロックの複数インスタンスを作成
  • 各ブロックインスタンスで表示する特定の露出フィルターを選択
  • ブロックインスタンスごとにリセットボタンの表示/非表示を設定
  • ブロックインスタンスごとに露出ソート条件の表示/非表示を設定
  • ブロックインスタンスごとに露出ページャーオプション(表示件数、オフセット)の表示/非表示を設定
  • 折りたたみ可能なフィールドセットグループを削除し、フィルターをプレーンなフォーム要素として表示
  • ブロック間でフィルター状態を維持するため、視覚的に非表示でもフィルターフォーム値を保持
  • 競合を防ぐため各ブロックインスタンスに固有のフォームIDを生成

Use Cases

露出フィルターを複数のリージョンに分割

プライマリ検索フィルター(キーワード検索やカテゴリなど)を結果の上のメインコンテンツエリアに配置し、セカンダリフィルター(日付範囲や作成者など)をサイドバーに配置します。各ブロックインスタンスは、指定されたフィルターのみを表示するように設定されます。

ソートコントロールをフィルターフォームから分離

露出フィルターをある場所に表示し、ソート基準/ソート順序コントロールを別のリージョン(結果グリッドの上など)に移動します。フィルターを表示してソートを非表示にしたブロックと、ソートコントロールのみを表示するブロックを作成します。

Views露出フィルターとファセット検索を組み合わせる

Views露出フィルターのサブセットをSearch API Facetsブロックと一緒にサイドバーに配置し、Viewsからのテキスト検索フィルターのみを使用しながら、他のフィルタリングにはファセットに依存します。重複を防ぐために冗長なフィルターフィールドを非表示にします。

特定のページでフィルター表示を簡素化

Views露出フィルターが複雑なフィルタリングのために折りたたみ可能なフィールドセットに整理されている場合、ランディングページ用にグループコンテナを削除してフィルターをフラットなレイアウトで表示するシンプルなブロックインスタンスを作成します。

最小限のクイック検索ブロックを作成

多くの露出フィルターを持つViewから、ヘッダーまたはフッターにプライマリキーワード検索フィールドのみを表示し、他のすべてのフィルター、リセットボタン、ページャーオプションを非表示にしたコンパクトな検索ブロックを作成します。

Tips

  • このモジュールは、選択されていないフィルターをフォームから削除するのではなく、CSSを使用して視覚的に非表示にします。これにより、ユーザーが同じページ上の複数のフィルターブロックインスタンスとやり取りする際にフィルター値が保持されます。
  • 各ブロックインスタンスは固有のフォームIDを取得するため、同じViews露出フィルターブロックの複数インスタンスがJavaScriptの競合なく共存できます。
  • リセットボタン、ソート条件、ページャーオプションの表示設定は、それらの機能がView表示設定で実際に有効化/露出されている場合にのみブロック設定に表示されます。
  • フィルターを複数のブロックに分散させる場合、すべてのブロックは同じフィルターフォーム状態を共有するため、同じViewに送信され、結果を一緒に更新します。
  • 「フォームグループの削除」オプションは、ViewがBEF(Better Exposed Filters)などのモジュールを使用してフィルターを折りたたみ可能なフィールドセットにグループ化している場合に便利です。

Technical Details

Troubleshooting 4
ブロックがブロックライブラリに表示されない

Viewに露出フィルターを持つ表示が少なくとも1つあり、View表示設定の詳細設定で「露出フィルターをブロックで使用」オプションが有効になっていることを確認してください。

フィルター表示オプションが空

View表示に露出フィルターが設定されている必要があります。Viewにフィルター条件を追加し、設定したい各フィルターで「このフィルターを露出する」オプションをチェックしてください。

異なるブロック間でフィルターが同期しない

これは期待される動作です。非表示のフィルターはフォーム値を保持するため、いずれかのブロックが送信されると、非表示のものを含むすべてのフィルター値がViewに適用されます。

リセットボタンオプションが設定に表示されない

Viewの露出フォーム設定(Viewの詳細設定 > 露出フォーム > 設定)でリセットボタンを有効にしてください。