Facets
Drupal向けのファセット検索インターフェースを提供し、サイトビルダーがSearch APIベースおよびコア検索表示用のファセットナビゲーションを簡単に作成・管理できるようにします。
facets
インストール
composer require 'drupal/facets:^3.0'
概要
Facetsモジュールは、コードを書かずに高度なファセット検索インターフェースを作成・管理することを可能にします。ファセットとは、ユーザーがカテゴリ、日付、価格帯、またはインデックスされた任意のフィールドなど、特定の条件を選択して検索結果を絞り込むためのフィルターです。
このモジュールは、複数のウィジェットタイプ(リンク、チェックボックス、ドロップダウン)、ファセット結果の変換とフィルタリングのための多数のプロセッサ、柔軟なURL処理を備えた包括的なプラグインシステムを提供します。Search APIおよびViewsとシームレスに統合され、ブロックベースの配置とFacets 3で導入された新しいExposed Filtersアプローチの両方をサポートします。
主な機能には、タクソノミーの階層ファセットサポート、エンティティラベルの自動翻訳による多言語サポート、依存ファセット条件、カスタマイズ可能な空の動作、適切なキャッシュコンテキスト処理による広範なキャッシュが含まれます。また、facets_restサブモジュールを通じてRESTエクスポートもサポートしています。
Features
- タクソノミー、エンティティ参照、日付、数値、テキストフィールドを含む任意のSearch APIインデックスフィールドからファセットを作成
- 複数のウィジェットタイプ:リンクリスト、チェックボックス、ドロップダウンセレクター、Array(REST用)
- ファセット結果のソート、フィルタリング、変換のための25以上の組み込みプロセッサを備えた広範なプロセッサシステム
- 展開可能なツリー構造と親子関係を持つ階層タクソノミーサポート
- 設定可能なURLエイリアスとクエリ文字列処理によるURLベースのフィルタリング
- 依存ファセット条件 - 他のファセット選択に基づいてファセットの表示/非表示を切り替え
- 空の動作オプション:ファセットを非表示、空のファセットを表示、またはカスタムテキストを表示
- エンティティラベルの自動翻訳による多言語サポート
- アクティブなファセット選択を表示するパンくずリスト統合
- 現在の検索フィルターを表示するFacets Summaryサブモジュール
- facets_range_widgetサブモジュールによる範囲スライダーウィジェット
- facets_searchbox_widgetサブモジュールによる検索ボックスフィルターウィジェット
- ヘッドレスアプリケーション向けfacets_restサブモジュールによるREST APIサポート
- facets_exposed_filtersサブモジュールによるViews Exposed Filters統合
- JavaScriptで追加のファセット項目を表示/非表示にするソフトリミット機能
- ファセットフィルタリングされたページの適切なキャッシュのためのキャッシュコンテキストサポート
- ファセットURL、クエリ文字列、キャッシュメタデータをカスタマイズするためのイベントシステム
Use Cases
ECサイトの商品フィルタリング
カテゴリ、ブランド、価格帯、色、サイズなどの商品属性用のファセットを作成します。価格スライダーにはRange Widgetサブモジュールを使用します。ネストされたカテゴリには階層を有効にします。フィルターが排他的か加算的かに基づいてAND/OR演算子を設定します。
タクソノミーフィルター付きコンテンツアーカイブ
タクソノミータームファセットを使用してフィルタリング可能なコンテンツアーカイブを構築します。ターム名を表示するために「エンティティIDをラベルに変換」プロセッサを有効にします。ネストされたボキャブラリには階層を使用します。関連するフィルターオプションのみを表示するために「絞り込まない結果を非表示」を追加します。
複数のフィルタータイプを持つ検索結果
テキストファセット(著者、タグ)、日付ファセット(粒度付きの公開日)、ブーリアンファセット(注目、公開)を組み合わせます。親ファセットが選択されたときにのみ関連フィルターを表示する依存ファセットを使用します。
ヘッドレス/デカップルド Search API
facets_restサブモジュールをArrayウィジェットと共に使用して、REST API応答でファセットデータを返します。DrupalのSearch APIインデックスとファセット処理を活用しながら、カスタムフロントエンドファセットUIを構築します。
多言語ファセット検索
翻訳されたエンティティラベルを自動的に読み込む「エンティティIDをラベルに変換」プロセッサを有効にします。モジュールは現在の言語コンテキストを尊重し、言語対応キャッシュのための適切なキャッシュコンテキストを提供します。
Tips
- 新規サイトには新しいFacets Exposed Filtersアプローチ(facets_exposed_filtersサブモジュール)を使用 - より良いViews統合を提供します
- 選択された項目をリストの先頭に保つために「アクティブ状態でソート」プロセッサを有効にしてください
- URLエイリアスは短く説明的に - ファセットがアクティブな時にURLに表示されます
- リンク/チェックボックスウィジェットでソフトリミットを設定して、管理しやすい数の項目を「もっと見る」展開で表示してください
- 開発中はブラウザキャッシュを無効にしてファセットの動作をテストしてください
- 開発中のキャッシュの問題をデバッグするためにfacets_debug_cacheable_metadata設定を使用してください
Technical Details
Admin Pages 5
/admin/config/search/facets
ファセットソースごとにグループ化されたすべての設定済みファセットを一覧表示するメイン管理ページ。ファセットの作成、編集、クローン、削除が可能です。順序付けのためのファセットの重みを表示し、ファセットソース設定への素早いアクセスを提供します。
/admin/config/search/facets/add-facet
新しいファセットを作成するためのフォーム。ファセットソース(Views表示)を選択し、ファセット対象のフィールドを選択し、名前とマシン名を指定します。
/admin/config/search/facets/{facets_facet}/edit
ウィジェット、プロセッサ、表示設定を編集するためのメインファセット設定フォーム。
/admin/config/search/facets/{facets_facet}/settings
ファセットソース、名前、フィールド選択を編集するための基本設定フォーム。
/admin/config/search/facets/facet-sources/{facets_facet_source}/edit
URLプロセッサとパンくずリストオプションを含むファセットソース設定を構成。
権限 1
Hooks 1
hook_facets_search_api_query_type_mapping_alter
Search APIベースのFacetsでデータタイプがどのように処理されるかをカスタマイズするために、Facetsクエリタイプマッピングを変更します
Troubleshooting 6
ファセットで「エンティティIDをラベルに変換」プロセッサを有効にしてください。インデックスされたフィールドがエンティティ参照であること(エンティティIDフィールドだけでなく)を確認してください。
検索Viewのないページでファセットを表示する場合、「ファセットソースが表示されていない場合はファセットを非表示」がオフになっていることを確認してください。ファセットブロックが表示可能なリージョンに配置されていることを確認してください。
Viewsクエリに言語フィルターを追加するか、hook_search_api_query_alter()を実装して結果を現在の言語に制限してください。
Viewsキャッシュが「Search API(なし)」またはファセット選択を尊重するキャッシュプラグインに設定されていることを確認してください。Facetsモジュールは適切なキャッシュコンテキストを自動的に追加します。
ファセット設定で「1つの結果のみが表示されるようにする」を有効にして、ドロップダウンを単一選択として動作させてください。
タクソノミーフィールド用のSearch APIインデックスで「Index hierarchy」プロセッサを有効にしてください。ファセットで「階層を使用」を有効にし、階層タイプとしてタクソノミーを選択してください。
Security Notes 3
- 「administer facets」権限はファセット設定の完全な制御を付与します - 慎重に割り当ててください
- URLエイリアスはXSSを防ぐためにサニタイズされます - 英数字、ドット、ハイフン、アンダースコア、チルダのみ許可されます
- エンティティラベルを表示するファセットプロセッサはエンティティアクセスを尊重します - 未公開コンテンツのラベルは権限のないユーザーに公開されません