Entity Usage
Drupalで他のエンティティから参照されているエンティティの使用状況を追跡し、サイト全体でコンテンツがどこで使用されているかを表示します。
entity_usage
概要
Entity Usageは、Drupalにおけるエンティティ間の関係を追跡・表示する強力なモジュールです。様々なフィールドタイプや埋め込み方法を通じてエンティティが互いにどのように参照しているかを監視し、各エンティティがどこで使用されているかを示すレポートを提供します。
このモジュールは、ソースエンティティが作成、更新、削除されたときに自動的に追跡を行い、すべてのエンティティ関係の正確な記録を維持します。ユーザーはエンティティページで「Usage」タブを表示して、現在のエンティティを参照している他のエンティティを確認できます。参照元のエンティティタイプ、フィールド名、言語、公開ステータス、リビジョンコンテキストに関する情報が表示されます。
Entity Usageは、エンティティ参照フィールド、リンクフィールド、テキストフィールド内のHTMLリンク、メディア埋め込み、Layout Builderコンポーネント、およびEntity Embed、LinkIt、Block Field、Dynamic Entity Referenceなどのコントリビュートモジュールとの連携を含む、複数の追跡方法をサポートしています。サイト管理者は、ソースおよびターゲットとして追跡するエンティティタイプ、特定の追跡プラグインの有効化/無効化、他の場所で参照されているエンティティを編集または削除する際に表示される警告メッセージを設定できます。
Features
- entity_reference、entity_reference_revisions、file、image、webformフィールドを通じたエンティティ間の関係を追跡
- 内部エンティティURLを指すLinkフィールド経由で参照されるエンティティを追跡
- エンティティURLを指すフォーマット済みテキストフィールド内の標準HTMLリンクを検出・追跡
- WYSIWYGエディターでDrupal Coreのメディア埋め込みフィルターを使用して埋め込まれたメディアエンティティを追跡
- Entity Embedコントリビュートモジュールを使用して埋め込まれたエンティティを追跡
- WYSIWYGエディターでLinkItコントリビュートモジュールを使用してリンクされたエンティティを追跡
- CKEditor Image ウィジェット経由で埋め込まれたファイルエンティティを追跡
- インラインコンテンツブロック、再利用可能ブロック、Entity Browser Block選択を含むLayout Builderレイアウトで参照されるエンティティを追跡
- block_fieldフィールドで参照されるブロックを追跡するBlock Fieldモジュールをサポート
- 複数のエンティティタイプへの参照を追跡するDynamic Entity Referenceモジュールをサポート
- そのエンティティへのすべての参照を表示するエンティティのcanonicalまたは編集ページでの設定可能な「Usage」タブ(ローカルタスク)を提供
- エンティティが他の場所でアクティブな参照を持っている場合、編集フォームに警告メッセージを表示
- エンティティが他のコンテンツで使用されている場合、削除フォームに警告メッセージを表示
- 既存コンテンツのすべての使用統計を再生成するバッチ更新ツール
- 使用統計のバッチ再作成用Drushコマンド
- 追跡対象を制御するための設定可能なソースおよびターゲットエンティティタイプフィルタリング
- 設定可能フィールドに加えてベースフィールドの追跡をサポート
- サイトを指す絶対URLを追跡するためのドメイン設定
- デフォルト、保留中、古いリビジョンでの使用状況を表示するリビジョン対応追跡
- 言語情報を表示する翻訳対応追跡
- ゴミ箱に入れられたソースエンティティを適切に表示するTrashモジュールとの連携
- カスタム追跡方法を追加できる拡張可能なプラグインシステム
Use Cases
コンテンツ削除時のリンク切れ防止
メディア、タクソノミーターム、カスタムエンティティなどのコンテンツタイプで削除警告メッセージを有効にします。編集者がエンティティを削除しようとすると、現在どこで使用されているかを示す警告が表示され、サイト全体でのリンク切れを防ぐのに役立ちます。
サイト全体のメディア使用状況監査
メディアエンティティのUsageタブを使用して、特定の画像、動画、ドキュメントがどこで使用されているかを確認できます。これは、孤立したメディアファイルの特定、コンテンツ依存関係の理解、複数ページに影響するコンテンツ更新の計画に役立ちます。
マイグレーション中のコンテンツ依存関係管理
コンテンツのマイグレーションや再構築の前に、Entity Usageを使用して関係の依存関係を理解します。これにより、マイグレーション順序の計画や、相互参照のために特別な処理が必要なコンテンツの特定に役立ちます。
再利用可能なコンテンツブロックの出現箇所追跡
Layout BuilderやBlock Fieldを介して複数のページで使用される再利用可能なblock_contentエンティティの場合、Usageタブはブロックが表示されるすべてのページを表示します。これは共有コンテンツを更新する際に価値があります。
特定の内部ページへのリンクを含むすべてのページの検索
HTMLリンク追跡プラグインはWYSIWYGコンテンツ内の標準リンクを検出します。Usageタブと組み合わせることで、編集者は特定のコンテンツにリンクしているすべてのページを見つけることができ、リンク監査やコンテンツ再構築に役立ちます。
翻訳間でのコンテンツ更新の調整
使用状況リストは参照の言語コンテキストを表示します。多言語コンテンツを更新する際、編集者はどの翻訳がエンティティを参照しているかを確認し、それに応じて更新を調整できます。
古いリビジョンでのみ参照されているコンテンツの特定
「使用場所」列はデフォルトリビジョン、保留中の下書き、古いリビジョンを区別します。これにより、コンテンツがアクティブに使用されなくなったがリビジョン履歴には存在する可能性がある場合を特定するのに役立ちます。
Tips
- 初期インストール後にバッチ更新を実行して、既存コンテンツの使用データを入力してください
- 編集者を圧倒しないように、最も重要なコンテンツタイプから始めて警告メッセージを段階的に有効にしてください
- コンテンツに絶対URLが含まれている場合はサイトドメインを設定してください - これにより完全なドメインを含むリンクの追跡が可能になります
- 大規模サイトでのバッチ更新はブラウザのタイムアウトを回避するためにDrushコマンドを使用してください
- モジュールはすべてのリビジョンと翻訳を追跡します - 使用データは参照の完全な履歴を反映します
- 特殊な参照タイプ用にEntityUsageTrackInterfaceを実装してカスタム追跡プラグインを作成できます
- ソースまたはターゲットエンティティが削除されると、使用データは自動的にクリーンアップされます
- hook_entity_usage_block_tracking hookにより、何が追跡されるかをきめ細かく制御できます
Technical Details
Admin Pages 3
/admin/config/entity-usage/settings
追跡するエンティティタイプ、有効にする追跡プラグイン、使用情報の表示オプションを含むエンティティ使用状況追跡設定を構成します。
/admin/config/entity-usage/batch-update
すべてのエンティティ使用統計を削除して再生成します。初期インストール後または追跡設定が大幅に変更された場合に使用します。
/admin/content/entity-usage/{entity_type}/{entity_id}
指定されたターゲットエンティティを参照するすべてのエンティティのテーブルを表示します。参照元エンティティ、そのタイプとバンドル、言語、フィールド名、公開ステータス、リビジョンコンテキスト(デフォルト、保留中、または古いリビジョン)を表示します。
権限 3
Hooks 1
hook_entity_usage_block_tracking
特定の使用追跡記録がデータベースに書き込まれるのをブロックすることをモジュールに許可します。記録の保存を防ぐにはTRUEを返します。
Drush Commands 1
drush entity-usage:recreate
設定されたすべてのソースエンティティタイプを処理し、使用記録を再生成することで、すべてのエンティティ使用統計を再作成します。
Troubleshooting 7
Entity Usage Settingsに移動し、「有効なローカルタスク」でエンティティタイプが選択されていることを確認してください。保存後、ルートが再構築されます。それでもタブが表示されない場合はキャッシュをクリアしてください。
Entity Usageはモジュールがインストールされた後に行われた変更のみを追跡します。/admin/config/entity-usage/batch-updateでバッチ更新を実行して、既存のすべてのコンテンツをスキャンし、使用データを入力してください。
Entity Usage Settingsで適切な追跡プラグインが有効になっていることを確認してください。また、ソースとターゲットの両方のエンティティタイプがそれぞれの設定セクションで有効になっていることを確認してください。
サイトがアクセス可能なすべてのドメインで「このウェブサイトのドメイン」設定を構成してください。wwwありなしのバリエーションや、ステージングドメインも含めてください。
使用データベースが同期していない可能性があります。既存の記録を削除してバッチ更新を実行し、現在のコンテンツから新しい使用データを再生成してください。
設定の「編集フォームの警告メッセージ」または「削除フォームの警告メッセージ」でエンティティタイプが有効になっていることを確認してください。エンティティはターゲットエンティティタイプとしても有効になっている必要があります。
バッチ更新プロセスは大規模サイト向けに最適化されていますが、時間がかかる場合があります。より良いパフォーマンスとブラウザのタイムアウトを回避するために、Drush(drush entity-usage:recreate)経由で実行してください。