Views Exposed Filters Summary

Viewsのヘッダーまたはフッター領域に選択された露出フィルターの概要を表示し、ユーザーがアクティブなフィルターを確認および削除できるようにします。

views_filters_summary
1,652 sites
28
drupal.org

インストール

Drupal 11, 10 v3.3.0
composer require 'drupal/views_filters_summary:^3.3'

概要

Views Exposed Filters Summaryは、ユーザーが選択した露出フィルターを視覚的に分かりやすく表示するViewsエリアプラグインです。この概要は任意のViewのヘッダーまたはフッター領域に表示でき、フィルター名と選択された値が含まれます。

このモジュールは高度に設定可能で、管理者は概要に表示するフィルター、フォーマット方法、個別の削除リンクを表示するかグローバルリセットリンクを表示するかを制御できます。タクソノミーターム、エンティティバンドル、リストフィールド、ブールフィルター、ユーザー名、日付範囲など、さまざまなフィルタータイプをサポートし、適切な演算子処理(等しい、等しくない、範囲内、より大きい、より小さい、含むなど)を行います。

このモジュールには、AJAX対応と標準のViews両方で動作する包括的なJavaScript機能が含まれており、ユーザーが個別のフィルターを削除したりすべてのフィルターをリセットしたりすると、Viewが適切に更新されます。複数のサブモジュールにより、Better Exposed Filters、Search API、Entity Browser、Address、Commerceなどの人気のあるcontributedモジュールとの統合を提供します。

Features

  • Viewのヘッダーまたはフッター領域に露出フィルターの概要を表示し、現在アクティブなフィルターを示す
  • 「X」ボタンによる個別フィルター削除機能を提供し、特定のフィルター値をクリアしてViewを更新
  • すべてのアクティブなフィルターを一度にクリアするリセットリンクオプションを含む
  • 設定可能なフィルター選択 - 概要に含める露出フィルターを選択可能
  • より明確なコンテキストのために値と並んでフィルターラベルを表示するオプション
  • 視覚的な煩雑さを減らすため、複数値フィルターを単一のラベルの下にグループ化
  • フィルター項目間のカスタマイズ可能な区切り文字(カンマ、パイプなど)
  • フィルター概要の前にカスタマイズ可能なプレフィックステキスト(例:「絞り込み条件:」)
  • 適切な文法のための単数形と複数形の結果ラベル(例:「1件の結果」vs「5件の結果」)
  • @total、@result_label、@exposed_filter_summaryなどの置換トークンを含む完全にカスタマイズ可能なコンテンツフォーマット
  • 演算子を意識した表示をサポート(「等しくない」「含む」「より大きい」などを表示)
  • ページリロードなしでシームレスなフィルター更新を行うAJAX対応Viewsで動作
  • 履歴状態操作を使用した標準の非AJAX Viewsで動作
  • 多言語サイトでタクソノミーターム名を現在のユーザーの言語に翻訳
  • フィルター表示動作を拡張およびカスタマイズするための包括的なhookシステム
  • 人気のあるcontributedモジュールとの統合のための11のサブモジュール

Use Cases

複数フィルターを持つ商品カタログ

カテゴリ、価格帯、ブランド、在庫状況でフィルタリングされた商品Viewsを持つECサイトで、「カテゴリ: 電化製品、価格: ¥10,000-¥50,000、ブランド: Sony で42商品を表示中」のような概要を表示し、個別フィルターを削除するXボタンとすべてをクリアするリセットリンクを提供します。

コンテンツ管理ダッシュボード

コンテンツタイプ、作成者、ステータス、日付範囲のフィルターを持つコンテンツ管理Viewで、ヘッダーにアクティブなフィルターを表示し、管理者が現在表示しているコンテンツのサブセットをすぐに確認でき、選択を簡単に変更できるようにします。

ファセットナビゲーション付き検索結果ページ

ファセットフィルター付きのSearch APIを使用する場合、アクティブなファセット選択(タクソノミーターム、コンテンツタイプ、日付範囲)を結果の上の概要バーに表示し、ユーザーがサイドバーまでスクロールせずに個別のファセットを確認・削除できるようにします。

アクセシブルなフィルター付きユーザーディレクトリ

役割、部門、場所でフィルタリングされたユーザーディレクトリで、A11yサブモジュールを使用して、適切なARIAラベルとセマンティックなHTML構造を持つスクリーンリーダーフレンドリーなフィルター削除を提供します。

Entity Browser選択ウィジェット

関連コンテンツを選択するために使用されるEntity Browserで、アクティブなフィルターを表示し、コンテンツ編集者が参照するエンティティを選択する際にどの条件で閲覧しているかを把握できるようにします。

多言語タクソノミーフィルタリング

タクソノミーでフィルタリングされたコンテンツを持つ多言語サイトで、一貫したエクスペリエンスのために現在のユーザーの言語に合わせて翻訳されたタクソノミーターム名をフィルター概要に表示します。

Tips

  • コンテンツフィールドで@exposed_filter_summaryトークンを使用して、結果テキスト内の任意の位置にフィルター概要を配置できます(例:「@total @result_label を表示中 @exposed_filter_summary」)
  • ユーザーがコンテキストなしでフィルター値を認識できない可能性がある場合は「ラベルを表示」を有効にします(例:単に「電化製品」ではなく「カテゴリ: 電化製品」を表示)
  • 「複数値フィルターをグループ化」を使用して、各値でラベルを繰り返す代わりに「カテゴリ: 電化製品、衣類、書籍」のように選択を統合します
  • 適切なセマンティックHTMLとスクリーンリーダーサポートを備えたアクセシビリティ準拠の実装にはA11yサブモジュールをインストールします
  • AJAX Viewsを使用する場合、フィルター概要はフィルター変更時にフルページリロードなしで自動的に更新されます
  • リセットリンクは概要に表示されているフィルターのみをリセットし、View上の他のフィルターはリセットしません - 特定のデフォルトフィルター状態を保持するのに便利です
  • カスタム区切りテキスト(カンマ、パイプ、セミコロン)には必要に応じてスペースを含めることができます - デフォルトは末尾にスペースを含む「, 」です
  • プレフィックステキストはすべてのフィルター項目の前に表示されますが、表示するアクティブなフィルターがある場合のみ表示されます
  • hook_views_filters_summary_plugin_alias()を実装してカスタムフィルタープラグインを既存の処理ロジックにマッピングすることでフィルターサポートを拡張できます
  • 日付フォーマットやその他のフィルター固有の表示要件をカスタマイズするにはhook_views_filters_summary_info_alter()を使用します

Technical Details

Hooks 8
hook_views_filters_summary_info_alter

ID、ラベル、処理済み値を含むフィルターの概要情報定義を変更します。特定のフィルタータイプの表示方法を変更するのに便利です。

hook_views_filters_summary_replacements_alter

概要テキストフォーマットで使用可能な置換トークンを追加または変更します。@search_api_fulltextのようなカスタムトークンを追加できます。

hook_views_filters_summary_item_alter

レンダリング前に特定のフィルター項目を変更します。リンク属性や表示プロパティを含みます。

hook_views_filters_summary_plugin_alias

フィルタープラグインIDを別のプラグインの処理ロジックにマッピングします。カスタムフィルタープラグインが標準のものと同じように動作する場合に便利です。

hook_views_filters_summary_valid_index

特定のフィルタープラグインの配列インデックス値を検証し、概要に含めるべきかどうかを決定します。

hook_views_filters_summary_exposed_form_id_alter

概要をそのフォームにマッチさせるために使用される露出フォームIDを変更します。カスタムフォームにViewsを埋め込むモジュールに必要です。

hook_views_filters_summary_filter_value_alter

概要で処理・表示される前の生のフィルター値を変更します。

hook_views_filters_summary_filter_value_label_alter

フィルター値の表示ラベルを変更し、フィルタータイプや設定に基づくカスタムフォーマットを可能にします。

Troubleshooting 6
フィルター概要が人間が読めるラベルではなくIDを表示する

フィルタータイプがサポートされているか確認してください。カスタムフィルタープラグインの場合は、適切なサブモジュールをインストールするか、hook_views_filters_summary_plugin_alias()を実装してサポートされているプラグインタイプにマッピングしてください。

削除/リセットリンクがAJAX Viewsで動作しない

Viewの詳細設定でAJAXが有効になっていることを確認してください。JavaScriptは「views-filters-summary--use-ajax」クラスをチェックして送信方法を決定します。

Entity Browser使用時に概要が表示されない

Entity Browserディスプレイ用の正しい露出フォームIDを提供するviews_filters_summary_ebサブモジュールを有効にしてください。

フィルター削除後にフィルター値が更新されない

非AJAX Viewsの場合、モジュールはhistory.replaceStateを使用してURLを更新します。サーバーが更新されたクエリパラメータを適切に処理することを確認してください。

タクソノミータームが間違った言語で表示される

モジュールはタクソノミータームを現在の言語に翻訳します。タームに翻訳が利用可能であり、Languageモジュールが適切に設定されていることを確認してください。

範囲フィルターが正しく表示されない

範囲フィルターは「最小-最大」として表示されるか、片方の境界のみが設定されている場合は「以上」などの演算子プレフィックスを使用します。これは期待される動作です。