Views Exposed Filter Blocks

Viewsの絞り込みフィルターをビューとは別にブロックとしてレンダリングするブロックタイプを提供します。すべてのビュー表示タイプで動作します。

views_exposed_filter_blocks
5,100 sites
35
drupal.org
Drupal 8 Drupal 9 Drupal 10 Drupal 11

インストール

Drupal 11, 10, 9, 8 v8.x-1.5
composer require 'drupal/views_exposed_filter_blocks:8.x-1.5'

概要

Views Exposed Filter Blocksは、Viewsの絞り込みフィルターフォームをサイト上の任意の場所に配置できる専用のブロックタイプを提供します。ビューの結果がどこに表示されるかに依存しません。コアのViews絞り込みフィルターブロックオプションはPage表示でのみ動作しますが、このモジュールはEVA(Entity Views Attachment)、embed表示、カスタム表示プラグインを含むすべてのタイプのビュー表示プラグインで動作します。

このモジュールは類似のモジュールとは異なるアプローチを取ります。ビュー設定内でどのブロックが絞り込みフィルターを受け取るかを設定する代わりに、ブロックの設定内でどのビューの絞り込みフィルターをレンダリングするかを設定します。これにより、サイトのレイアウト構成においてより柔軟性が得られます。

ブロックはDrupalのフォームビルダーを使用してViewsの絞り込みフィルターフォームをプログラムで構築し、フォームアクションに対するビューのカスタムURL設定を尊重します。これにより、あるページにフィルターフォームを配置し、別のURLの結果ページに送信することが可能になります。

Features

  • 任意のビューの絞り込みフィルターフォームをレンダリングする設定可能なブロックを提供
  • EVA、embed、カスタム表示プラグインを含むすべてのビュー表示タイプで動作
  • ブロック設定で有効なビューと表示の組み合わせを選択可能
  • ページをまたいだフィルタリングシナリオ向けのカスタムURLフォームアクションをサポート
  • ブロック内で送信された値を処理するためのオプションのフォーム状態処理
  • フィルター選択が常に最新であることを保証するためキャッシュなし
  • ブロック設定時にビューと表示の存在を検証

Use Cases

埋め込みビュー用のサイドバーフィルター

EVAや類似のモジュールを使用してビュー結果をコンテンツ内に埋め込む場合、結果がメインコンテンツエリアに表示されている間に絞り込みフィルターをサイドバーブロックに配置できます。これにより、より従来的な検索インターフェースレイアウトが作成されます。

ページをまたいだフィルタリング

カスタムURL設定でビューを構成し、ランディングページに絞り込みフィルターブロックを配置します。ユーザーはランディングページでフィルター条件を設定でき、送信時にフィルターが適用された結果ページに移動します。

同じビューに対する複数のフィルターブロック

すべて同じビューを指す複数のフィルターブロックインスタンスを異なるリージョンまたは異なるページに配置します。これにより、ユーザーはサイト上のさまざまな場所からフィルターにアクセスできます。

ページビューのフィルター配置の置き換え

絞り込みフィルターを結果の上ではなく特定のブロックリージョンに配置したいページビューの場合、このモジュールを使用することで完全な機能を維持しながらフィルター配置を完全に制御できます。

Tips

  • 適切なフォーム送信動作のために、このモジュールを使用する際はビューのAJAXを無効にしてください
  • ページ表示ビューの場合、組み込みの「Exposed form in block」オプションの方が適切な場合があるため、そちらの使用を検討してください
  • フィルター選択が常に最新であることを保証するためにブロックキャッシュはデフォルトで無効になっています - 高トラフィックサイトではパフォーマンスへの影響を考慮してください
  • フィルターフォームを結果とは別のページに配置する必要がある場合は、ビュー表示設定のカスタムURL機能を使用してください

Technical Details

Troubleshooting 4
フィルターがビュー結果に影響しない

フィルターブロックとビュー結果の両方が同じページにあることを確認するか、ビューの表示設定でカスタムURLを設定してください。また、ビューでAJAXが無効になっていることを確認してください。

送信後に選択したフィルター値が保持されない

送信された値をフォームに表示する必要がある場合は、ブロック設定で「Always process form state」オプションが有効になっていることを確認してください。

ビューが存在しないというエラーがブロックに表示される

設定されたビューまたは表示が削除された可能性があります。ブロック設定を編集し、有効なビューと表示の組み合わせを選択してください。

フォームアクションが間違ったURLを指している

ビューの表示設定で「Link display」オプションを「Custom URL」に設定し、正しい宛先URLを指定してください。