File Entity(フィールド追加可能なファイル)
Drupalのファイルエンティティを拡張し、フィールドの追加と表示を可能にします。ファイルをタイプ別に整理し、カスタムフィールド、表示モード、フォーマッターを設定できます。
file_entity
インストール
composer require 'drupal/file_entity:8.x-2.3'
composer require 'drupal/file_entity:8.x-2.0'
概要
File Entityは、Drupalコアのファイルエンティティを完全な機能を持つコンテンツエンティティに変換する包括的なモジュールです。Field UIを通じてファイルにカスタムフィールドを追加したり、MIMEタイプに基づいてファイルをタイプ(バンドル)別に整理したり、様々な表示モードやフィールドフォーマッターを使用して表示したりできます。
このモジュールは、画像、音声、動画、ドキュメント用の組み込みファイルタイプを提供し、アップロードされたファイルをMIMEタイプに基づいて自動的に分類します。HTML5の音声・動画フォーマッター、レスポンシブ画像サポート、動的リンクテキスト用のTokenサポート付きダウンロードリンクフォーマッターが含まれています。
File EntityはDrupalのエコシステムと深く統合されており、ファイル一覧とフィルタリング用のViews統合、動的alt/titleテキスト用のToken APIサポート、ファイルURLエイリアス用のオプションのPathauto統合、ヘッドレスDrupal実装用のREST/HAL APIノーマライザーを提供します。
Features
- フィールド追加可能なファイルエンティティ - Field UIを使用して任意のDrupalフィールドタイプをファイルに追加可能
- ファイルタイプバンドル(画像、音声、動画、ドキュメント)とMIMEタイプによる自動分類
- 設定可能なMIMEタイプパターンを持つカスタムファイルタイプ
- タイプ選択、保存先スキーム、フィールド設定を含むマルチステップファイルアップロードウィザード
- コントロール、自動再生、ループオプション付きHTML5オーディオプレーヤーフォーマッター
- コントロール、自動再生、ループ、ミュート、サイズ設定付きHTML5ビデオプレーヤーフォーマッター
- レスポンシブ画像スタイルをサポートするレスポンシブ画像フォーマッター
- Tokenをサポートするカスタマイズ可能なリンクテキスト付きダウンロードリンクフォーマッター
- 人間が読みやすいファイルサイズを表示するファイルサイズフォーマッター
- AJAXモーダルダイアログによるインラインファイル編集ウィジェット
- アーカイブのアップロードと展開機能
- 専用データベーステーブルでのファイルメタデータ保存(画像サイズなど)
- ファイル所有者、タイプ、ストリームラッパーに基づく詳細なアクセス制御
- ファイルタイプごとの動的パーミッション(自分の/すべての編集・削除・ダウンロード)
- ファイル管理用のカスタムフィールド、フィルター、引数を含むViews統合
- 画像の動的altおよびtitle属性用Token API統合
- ファイルURLエイリアス用Pathauto統合
- base64ファイルコンテンツを含むヘッドレスDrupal用RESTおよびHAL APIノーマライザー
- 削除、永続化、一時化のための一括操作
- 各ファイルの使用場所を表示するファイル使用状況追跡ビュー
- ファイルタイプ、MIMEタイプ、表示モードに基づくテーマサジェスト
Use Cases
カスタムメタデータ付きメディアライブラリ
File Entityを使用して、画像に撮影者クレジット、著作権情報、ライセンス条件のカスタムフィールドを持つリッチなメディアライブラリを作成します。音声ファイルにはアーティスト、アルバム、再生時間のフィールドを持たせることができます。動画ファイルには解像度、コーデック情報、トランスクリプトを保存できます。
ドキュメント管理システム
アップロードされたドキュメントがタイプ別に自動分類されるドキュメント管理ワークフローを実装します。ドキュメントバージョン、承認ステータス、部門、有効期限のフィールドを追加します。Viewsを使用して部門やステータス別のフィルタリングされたドキュメント一覧を作成します。
マルチフォーマットメディア表示
HTML5の音声・動画フォーマッターを使用して、ネイティブブラウザプレーヤーでメディアファイルを表示します。自動再生、コントロール、ループ設定を構成できます。画像には、デバイスのビューポートに基づいて最適なサイズの画像を配信するレスポンシブ画像フォーマッターを使用します。
セキュアなファイル配布
機密ファイルをプライベートファイルシステムに保存し、詳細なパーミッションを使用してアクセスを制御します。異なる機密レベル用のファイルタイプを作成し、それぞれに特定のダウンロードパーミッションを設定します。ファイル使用状況を追跡して、特定のファイルがどのコンテンツで使用されているかを監査します。
ヘッドレスDrupalメディアAPI
HAL/RESTノーマライザーを使用してREST API経由でファイルエンティティを公開します。ファイルコンテンツは転送用に自動的にbase64エンコードされます。フロントエンドアプリケーションはAPI経由でbase64エンコードされたコンテンツを投稿してファイルをアップロードできます。
アーカイブからの一括ファイルインポート
アーカイブアップロード機能を使用して、複数のファイルを一度にインポートします。画像を含むZIPファイルをアップロードすると、File Entityが正規表現パターンに一致するすべてのファイルを展開し、自動タイプ分類を行いながら各ファイルの個別ファイルエンティティを作成します。
Tips
- [file:field_image_alt_text:value]のようなTokenパターンを使用して、画像に動的altテキストを設定し、アクセシビリティとSEOを向上させてください。
- 特定の用途(例:'ポッドキャスト'、'インフォグラフィック')向けに専用のフィールドとパーミッションを持つカスタムファイルタイプを作成してください。
- ファイル設定の'スキップ'オプションを使用して、単一のファイルタイプや保存場所のみを持つサイトのアップロードウィザードを効率化してください。
- ファイル/画像フィールドで'編集可能なファイル'ウィジェットを設定すると、親エンティティフォームを離れずにインライン編集ができます。
- /file/{fid}/usageのファイル使用状況ビューを活用して、削除前にファイルがどこで使用されているかを監査してください。
- パフォーマンス向上のため、カスタムのプリプロセスではなく'ファイルサイズ'フォーマッターを使用してファイルサイズを表示してください。
- レスポンシブ画像を使用する場合、フォーマッター設定で選択する前にレスポンシブ画像スタイルが設定されていることを確認してください。
Technical Details
Admin Pages 11
/admin/structure/file-types
サイト上のファイルを整理・分類するために使用するファイルタイプ(バンドル)を管理します。各ファイルタイプは特定のMIMEタイプに一致させ、独自のカスタムフィールドセットを持つことができます。
/admin/structure/file-types/add
ラベル、マシン名、説明、関連するMIMEタイプを定義して新しいファイルタイプを作成します。
/admin/structure/file-types/manage/{file_type}/edit
既存のファイルタイプのラベル、説明、MIMEタイプ関連付けを含む設定を変更します。
/admin/config/media/file-settings
アップロード制限、許可される拡張子、デフォルトのalt/title属性、アップロードウィザードの動作を含むグローバルなファイルエンティティ設定を行います。
/admin/content/files
サイトにアップロードされたすべてのファイルの表示、管理、一括操作を行います。ファイル名、MIMEタイプ、ステータス、ファイルタイプでフィルタリングできます。
/file/add
ファイルアップロード用のマルチステップウィザード。ステップには、ファイルアップロード、ファイルタイプ選択(複数のタイプが一致する場合)、保存先スキーム選択(複数のスキームが利用可能な場合)、追加フィールド設定が含まれます。
/admin/content/files/archive
アーカイブファイル(ZIP、TARなど)をアップロードして展開し、複数のファイルエンティティを一度に作成します。
/file/{file}
ファイルタイプに設定された表示モードを使用してファイルエンティティをレンダリングして表示します。
/file/{file}/edit
ファイルエンティティのフィールドを編集し、必要に応じて新しいアップロードでファイルを置き換えます。
/file/{file}/usage
このファイルを参照しているすべてのエンティティを表示します。エンティティのラベル、エンティティタイプ、登録モジュール、使用回数が表示されます。
/file/{file}/download
適切なヘッダーとセキュアなダウンロード用のオプションのHMACトークン検証を使用してファイルをダウンロードします。
権限 14
Hooks 7
hook_file_type
カスタムロジックに基づいて、ファイルエンティティに割り当てるファイルタイプ(バンドル)を決定します。
hook_file_type_alter
ファイルに割り当て可能なファイルタイプのリストを変更し、タイプ割り当ての優先順位を調整できます。
hook_file_download_headers_alter
ファイルダウンロード時に送信されるHTTPヘッダーを変更します。
hook_file_transfer
ファイルがダウンロード/転送されたときに反応します。リダイレクトやログ記録に便利です。
hook_file_metadata_info
ファイルエンティティ用のメタデータ情報を提供します。
hook_file_metadata_info_alter
他のモジュールで定義されたメタデータ情報を変更します。
hook_query_file_entity_access_alter
データベースクエリを変更することで、ファイル一覧へのアクセスを制御します。
Troubleshooting 5
cronを実行してファイルタイプ判定キューを処理してください。インストール中、既存のファイルは分類のためにキューに入れられます。レポート > サイトの状態で残りのキュー項目を確認してください。
管理画面 > サイト構築 > ファイルタイプで各ファイルタイプに設定されているMIMEタイプパターンを確認してください。アップロードされたファイルのMIMEタイプがパターンの1つに一致することを確認してください。より広範な一致にはワイルドカード(例:image/*)を使用してください。
ユーザーが適切な'すべての[タイプ]ファイルをダウンロード'または'自分の[タイプ]ファイルをダウンロード'パーミッションを持っていることを確認してください。また、プライベートストリームラッパーアクセス用の'プライベートファイルを表示'パーミッションも確認してください。
Tokenモジュールがインストールされていることを確認し、管理画面 > 環境設定 > メディア > ファイル設定でalt/titleのTokenパターンを設定してください。画像の場合、画像ファイルタイプにfield_image_alt_textとfield_image_title_textフィールドを作成してください。
ファイル置換は書き込み可能なストリームラッパーに保存されているファイルでのみ機能します。ファイルがローカルストリームラッパーを使用しているか確認してください。リモートまたは読み取り専用のストリームラッパーはファイル置換をサポートしていません。
Security Notes 5
- 'ファイルアクセス制御をバイパス'パーミッションは、すべてのファイルアクセス制限をバイパスするため、完全に信頼できる管理者ロールにのみ付与してください。
- プライベートファイルはストリームラッパーアクセスチェックで保護されています。プライベートファイルの表示とダウンロードに適切なパーミッションが設定されていることを確認してください。
- ファイルダウンロードにはデフォルトでHMACトークン検証が含まれています。特に必要でない限り、'allow_insecure_download'を有効にしないでください。
- ファイルタイプのパーミッションを慎重に確認してください - タイプ固有のパーミッションにより、特定のタイプのファイルを誰が編集、削除、ダウンロードできるかを詳細に制御できます。
- アーカイブアップロード機能には注意してください - 展開されたファイルからの潜在的なセキュリティ問題を防ぐため、信頼できるユーザーのみがアクセスできるようにしてください。