Views Block Exposed Filter Blocks

Viewsのブロック表示における公開フィルターを、独立した別のブロックとして配置できるようにします。

views_block_filter_block
7,754 sites
40
drupal.org
Drupal 8 Drupal 9 Drupal 10 Drupal 11

インストール

Drupal 11, 10, 9, 8 v2.1.2
composer require 'drupal/views_block_filter_block:^2.1'

概要

Views Block Exposed Filter Blocksは、Drupalのviews機能を拡張するユーティリティモジュールで、ブロック表示のViewsの公開フィルターを標準的なブロックとしてレンダリングして配置できるようにします。Drupalコアのデフォルトでは、この「ブロック内の公開フォーム」機能はページ表示のViewsでのみ利用可能で、ブロック表示のViewsでは利用できません。

インストール後、このモジュールは追加の設定を必要としません。Views UIのすべてのブロック表示に対して、「詳細設定」ペインの下に「ブロック内の公開フォーム」オプションが自動的に追加されます。特定のViewブロックでこのオプションを有効にすると、そのViewの公開フィルターのみを含む新しいブロックがブロックレイアウトシステムで利用可能になり、サイト構築者はフィルターフォームをView結果とは別にページ上の任意の場所に配置できます。

このモジュールはctools_viewsのブロック表示プラグインを拡張し、主要なメソッドをオーバーライドしてブロック内での公開フォームのレンダリングを有効にします。また、表示可能なフィルター要素がある場合にのみリセットボタンを表示するように、公開フォームのリセットボタンの表示を変更します。

Features

  • 通常はページ表示でのみ利用可能な「ブロック内の公開フォーム」オプションをViewsブロック表示で有効化
  • Viewブロック表示の公開フィルターのみを含む、配置可能な独立したブロックを作成
  • 表示可能なフィルター要素の有無に基づいてリセットボタンを自動的に表示/非表示
  • 設定不要 - インストール後すぐに動作
  • Views UIの詳細設定セクションにシームレスに統合

Use Cases

サイドバーへの公開フィルターの配置

メインコンテンツエリアにコンテンツを表示するViewsブロックがある場合、公開フィルター(カテゴリードロップダウンやキーワード検索など)をサイドバーに表示したい場合があります。このモジュールを使用すると、View結果をメインコンテンツエリアに残したまま、公開フィルターフォームを任意のリージョンに別のブロックとして配置できます。

AJAXを有効にしたViewブロックを使用した検索ページの作成

Viewsブロックを使用したECサイトや商品一覧ページで、フィルター/ファセットフォームを目立つ場所(商品の上やコラプシブルパネルなど)に配置し、フィルター適用時にAJAX経由で商品グリッドを更新できます。

複数フィルターを持つランディングページ

複数のViewsブロックが共通のフィルターブロックを共有するランディングページを作成できます。公開フィルターフォームをページ上部に一度配置すると、関連するViewブロックがページ上のどこに表示されていてもフィルタリングされます。

モバイルフレンドリーなフィルター配置

View結果をメインコンテンツフローに保持しながら、公開フィルターブロックをモバイルレイアウトに適した場所(スライドアウトメニューやコラプシブルセクションなど)に配置できます。

Tips

  • 公開フィルターブロックはブロックライブラリで「Exposed form: [view_machine_name]-[display_id]」という名前になります
  • CSSを使用して公開フィルターブロックをView結果とは独立してスタイル設定できます
  • フィルター適用時のスムーズなユーザー体験のために、ViewsブロックでAJAXの使用を検討してください
  • このモジュールはコンテキストフィルターと通常の公開フィルターの両方で動作します

Technical Details

Hooks 3
hook_views_plugins_display_alter

Views表示プラグインを変更し、デフォルトのブロック表示クラスをモジュールのカスタムViewsBlockFilterBlockPluginDisplayBlockクラスに置き換えます。これによりブロック内での公開フォームのレンダリングが有効になります。

hook_form_views_exposed_form_alter

Viewsの公開フォームを変更し、リセットボタンの表示を制御します。リセットボタンはフォーム内に表示可能なフィルター要素がある場合にのみ表示されます。

hook_help

admin/helpページでモジュールのヘルプテキストを提供し、モジュールの目的と機能を説明します。

Troubleshooting 4
「ブロック内の公開フォーム」オプションがViews UIに表示されない

モジュールが正しく有効化されていることを確認してください。ブロック表示を編集していることを確認してください(ページ表示ではありません)。このオプションはViews UIの詳細設定 > その他に表示されます。

公開フィルターブロックがブロックライブラリに表示されない

Viewで「ブロック内の公開フォーム」を有効にした後、Viewを保存する必要があります。その後、サイト構成 > ブロックレイアウトに移動し、「Exposed form: [view_name]-[display_id]」という名前のブロックを探してください。

ctools_viewsが自動的にインストールされない

以前のバージョンからアップグレードする場合は、データベース更新(drush updb)を実行してctools_viewsをインストールするアップデートフックをトリガーしてください。または、このモジュールを有効にする前に手動でctools_viewsを有効にしてください。

公開フィルターフォームにリセットボタンが表示されない

リセットボタンは表示可能なフィルター要素がある場合にのみ表示されます。すべてのフィルターが非表示またはオプションがない場合、リセットボタンは非表示になります。これはリセットするものがないときにリセットボタンを表示しないための意図的な動作です。