Views Block Exposed Filter Blocks
Viewsのブロック表示における公開フィルターを、独立した別のブロックとして配置できるようにします。
views_block_filter_block
インストール
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の詳細設定 > その他に表示されます。
Viewで「ブロック内の公開フォーム」を有効にした後、Viewを保存する必要があります。その後、サイト構成 > ブロックレイアウトに移動し、「Exposed form: [view_name]-[display_id]」という名前のブロックを探してください。
以前のバージョンからアップグレードする場合は、データベース更新(drush updb)を実行してctools_viewsをインストールするアップデートフックをトリガーしてください。または、このモジュールを有効にする前に手動でctools_viewsを有効にしてください。
リセットボタンは表示可能なフィルター要素がある場合にのみ表示されます。すべてのフィルターが非表示またはオプションがない場合、リセットボタンは非表示になります。これはリセットするものがないときにリセットボタンを表示しないための意図的な動作です。