Entity Browser
エンティティの選択が必要なあらゆるコンテキストで使用できる、汎用的で高度に拡張可能なエンティティブラウザ/ピッカー/セレクタを提供します。
entity_browser
インストール
composer require 'drupal/entity_browser:8.x-2.15'
概要
Entity Browserは、Drupalでエンティティを閲覧、作成、選択するための標準化された高度にカスタマイズ可能なインターフェースを提供する包括的なモジュールです。複数の表示オプション(モーダル、iframe、スタンドアロン)、エンティティ選択用の様々なウィジェットタイプ(Views、ファイルアップロード、メディア画像アップロード)、カスタマイズ可能な選択表示を備えた柔軟なプラグインベースのアーキテクチャを提供します。
このモジュールはエンティティ参照フィールドとシームレスに統合され、エンティティ選択体験を向上させる専用のフィールドウィジェットを提供します。複数ステップの選択ワークフロー、ドラッグ&ドロップによる並べ替え、カーディナリティ検証、コンテキストに応じたバンドルフィルタリングをサポートしています。Entity Browserは、メディア管理、コンテンツ編集ワークフロー、高度なエンティティ選択機能を必要とするあらゆるシナリオで特に有用です。
拡張性を考慮して構築されており、開発者は表示、ウィジェット、ウィジェットセレクタ、選択表示、フィールドウィジェット表示、検証用のカスタムプラグインを作成できます。また、選択プロセスの様々な段階で動作をカスタマイズするための包括的なイベントシステムも提供しています。
Features
- カスタマイズ可能なラベルとマシン名を持つ設定可能なエンティティブラウザインスタンス
- 複数の表示プラグイン:モーダルダイアログ、iFrame埋め込み、スタンドアロンページ
- エンティティ選択用ウィジェットプラグイン:Viewsベースの選択、ファイルアップロード、メディア画像アップロード
- ウィジェットセレクタプラグイン:複数ウィジェット間のナビゲーション用のタブとドロップダウン
- 選択表示プラグイン:作業中の選択ゾーンを持つ複数ステップ表示、即時選択用の非表示
- フィールドウィジェット表示プラグイン:エンティティラベル、画像サムネイル、レンダリングされたエンティティ表示
- 編集、削除、置換ボタンを備えたエンティティ参照フィールドウィジェット
- メタデータ編集(alt、title、description)を備えたファイル/画像フィールドウィジェット
- カーディナリティ検証とエンティティタイプ検証
- 選択されたエンティティのドラッグ&ドロップによる並べ替え
- カスタム表示プラグインと選択フォームフィールドを持つViewsとの統合
- Viewsでのコンテキストに応じたバンドルフィルタリング
- 編集モードでの事前選択のサポート
- カスタマイズ用のイベント駆動型アーキテクチャ
- AJAXベースのエンティティ選択用JavaScriptコールバック
- アップロード場所でのToken サポート
- ブラウザ内でエンティティを作成するためのInline Entity Formモジュールとの統合
Use Cases
メディアライブラリの代替
Viewsベースのメディア一覧、新しいメディア用のアップロードウィジェット、サムネイルプレビューを持つカスタムメディアブラウザを作成。シームレスなコンテンツ編集ワークフローのためにモーダル表示を使用。
コンテンツ参照フィールド
デフォルトのエンティティ参照オートコンプリートをビジュアルエンティティブラウザに置き換え。画像付きコンテンツを表示するViewを設定し、リッチなプレビュー用に「rendered_entity」表示を使用。
ギャラリー選択付き画像フィールド
ファイル/画像フィールドウィジェットでエンティティブラウザを使用。確定前に選択を確認するための複数ステップ選択表示を設定。ドラッグ&ドロップによる並べ替えを有効化。
インラインエンティティ作成
entity_browser_entity_formサブモジュールを有効にし、Viewウィジェットと一緒に「Entity form」ウィジェットを追加。ユーザーはブラウザを離れることなく既存のエンティティを選択するか新しいエンティティを作成可能。
コンテキストに応じたエンティティ選択
entity_browser_bundleフィルタとentity_browser_widget_context引数デフォルトを使用して、フィールドのターゲットバンドル設定に一致するエンティティのみを表示。
WYSIWYGエンティティ埋め込み
Entity Embedモジュールと統合して、エディタがエンティティブラウザを使用してWYSIWYGエディタから直接エンティティ(メディア、ノード)を閲覧および埋め込み可能に。
Tips
- 送信ボタンを押さずにワンクリックで選択するには、Viewウィジェットの「Auto select」オプションを使用
- 選択エリアがすぐに必要ない場合、よりクリーンなUIのためにMulti step displayで「Selection hidden by default」を有効化
- 単一値フィールドで手動の削除後追加ワークフローなしで素早く置換するには「Replace」ボタンオプションを使用
- 現在のページに基づいてViewsにコンテキスト引数を渡すにはhook_entity_browser_view_executable_alterを活用
- 1つの複雑なブラウザではなく、異なるユースケースに異なるエンティティブラウザを使用
- 動作する設定を確認するにはentity_browser_exampleモジュールを有効にしてテスト
- 大量のエンティティセットでのパフォーマンス向上のため、ページネーション付きのAJAX対応Viewsを使用
- チェックボックスとラジオボタンを選択する際はカーディナリティを考慮 - Viewウィジェットはカーディナリティに基づいて自動切り替え
Technical Details
Admin Pages 3
/admin/config/content/entity_browser
設定されたすべてのエンティティブラウザを一覧表示します。ここから新しいブラウザの追加、既存のブラウザの編集、ウィジェットの設定、ブラウザの削除ができます。
/admin/config/content/entity_browser/add
表示、ウィジェットセレクタ、選択表示設定を持つ新しいエンティティブラウザ設定を作成します。
/admin/config/content/entity_browser/{entity_browser}/widgets
エンティティブラウザのウィジェットを設定します。エンティティを選択するさまざまな方法を提供するウィジェットを追加、削除、並べ替えできます。
権限 2
Hooks 9
hook_entity_browser_display_info_alter
表示プラグイン定義を変更
hook_entity_browser_widget_info_alter
ウィジェットプラグイン定義を変更
hook_entity_browser_selection_display_info_alter
選択表示プラグイン定義を変更
hook_entity_browser_widget_selector_info_alter
ウィジェットセレクタプラグイン定義を変更
hook_entity_browser_field_widget_display_info_alter
フィールドウィジェット表示プラグイン定義を変更
hook_entity_browser_widget_validation_info_alter
ウィジェット検証プラグイン定義を変更
hook_form_entity_browser_form_alter
任意のエンティティブラウザフォームを変更(基本フォームIDでの変更)
hook_form_entity_browser_ENTITY_BROWSER_ID_form_alter
IDで特定のエンティティブラウザフォームを変更
hook_entity_browser_view_executable_alter
レンダリング前にViewウィジェット内のView実行可能オブジェクトを変更
Troubleshooting 6
Drupal AJAXダイアログライブラリがロードされていることを確認。ブラウザコンソールでJavaScriptエラーをチェック。エンティティブラウザに有効な設定があることを確認。
Viewに「Entity browser select form」フィールドを追加。このフィールドは選択が機能するために必要。
カーディナリティ設定をチェック。「Edit selection」モードを使用している場合、選択表示プラグインが事前選択をサポートしていることを確認(No displayではなくMulti step displayを使用)。
アップロードウィジェットの「Allowed file extensions」設定が要件に一致していることを確認。PHPのアップロード制限をチェック。
entity_browser_bundleフィルタはウィジェットコンテキストから値を取得。フィールドウィジェットがwidget_contextでtarget_bundlesを渡していることを確認。
「access [browser_id] entity browser pages」のユーザー権限をチェック。Viewに結果があり、表示タイプが「Entity browser」であることを確認。
Security Notes 4
- 「administer entity browsers」権限は制限されており、信頼できる管理者のみに付与すべき
- Entity Browserはエンティティアクセスを尊重 - ユーザーは閲覧アクセス権のあるエンティティのみ選択可能
- ファイルアップロードウィジェットは拡張子とファイルサイズのフィールドレベル検証を継承
- フィールドウィジェットの編集ボタンは表示前にエンティティ更新アクセスをチェック