Views デフォルト引数:エンティティフィールド値

現在表示中のエンティティからフィールド値を自動的に抽出し、デフォルトのコンテキストフィルター引数として使用する Views argument_default プラグイン。

views_arg_entity_field
605 sites
29
drupal.org

インストール

Drupal 10, 9, 8 v2.0.5
composer require 'drupal/views_arg_entity_field:^2.0'

概要

Views Default Argument: Entity Field Values は、「現在の」エンティティからフィールド値を動的に取得する Views コンテキストフィルター(引数)デフォルトプラグインを提供します。現在のエンティティはルートパラメーターから自動的に判定されるため、エンティティページでシームレスに使用できます。

View ブロックを配置したり、エンティティページ(ノードページなど)に View を埋め込んだりする際、このプラグインはそのエンティティから任意のフィールド値を抽出し、View のコンテキストフィルターのデフォルト引数として使用できます。これにより、カスタムコードや複雑な設定を必要とせずに、強力な動的フィルタリングが可能になります。

このプラグインは、ノード、ユーザー、タクソノミーターム、カスタムエンティティを含むすべてのコンテンツエンティティタイプをサポートしています。任意のフィールドプロパティから値を抽出でき、設定可能な連結または単一値選択で複数値フィールドを処理し、空のフィールドに対するフォールバック値を提供します。

Features

  • 任意のコンテンツエンティティタイプ(ノード、ユーザー、タクソノミーターム、カスタムエンティティなど)のルートパラメーターから現在のエンティティを自動検出
  • メイン値だけでなく、任意のフィールドプロパティの抽出をサポート(例:リンクフィールドから 'title' や 'uri' を抽出)
  • 複数値フィールドの設定可能な処理:すべての値を OR(+)または AND(,)セパレーターで連結、またはデルタインデックスで特定の値を選択
  • 空のフィールドに対するフォールバック値のサポートにより、ソースフィールドに値がない場合でも適切に処理
  • エンティティキャッシュタグと URL キャッシュコンテキストによる適切なキャッシュ無効化
  • エンティティタイプの選択に基づく条件付き表示を持つ動的フォーム UI
  • エンティティリファレンス、テキストフィールド、整数フィールド、リンクフィールドなど、あらゆるフィールドタイプで動作

Use Cases

タクソノミーに基づく関連コンテンツブロック

ノードページに関連コンテンツのブロックを表示します。タクソノミータームIDのコンテキストフィルターを持つ View を作成し、このプラグインを使用して現在のノードのタクソノミーリファレンスフィールドからターム ID を自動的に取得します。同じタームを共有するすべてのノードが表示されます。

同じ著者の他のコンテンツ

ノードページに同じ著者の他のコンテンツを表示します。著者ユーザー ID でコンテキストフィルターを設定し、このプラグインを使用して現在のノードから 'uid' フィールド値を抽出します。カスタムコードは不要です。

エンティティリファレンスのクロスリンク

「プロジェクト」ノードページで、関連するすべての「タスク」ノードを表示します。タスクがプロジェクトを指すエンティティリファレンスフィールドを持っている場合、プロジェクト ID コンテキストフィルターを持つタスクの View を作成し、このプラグインを使用して現在のプロジェクトのノード ID を渡します。

複数値フィールドのフィルタリング

現在のコンテンツと任意のタグを共有するコンテンツを表示します。'+' セパレーターで連結を使用して複数値フィールドからすべてのタクソノミーターム ID を抽出し、すべての値にわたる OR フィルタリングを有効にします。

リンクフィールドプロパティの抽出

リンクフィールドなどの複雑なフィールドから特定のプロパティを抽出します。例えば、'title' プロパティまたは 'uri' プロパティのみを抽出して、一致するリンクタイトルや URL を持つ他のコンテンツを見つけるためのフィルター条件として使用します。

空のフィールドへのフォールバック

ソースフィールドが空の可能性がある場合に安全なフォールバックを設定します。Views の例外値と一致する empty_value を設定することで、結果なしやエラーを表示する代わりにコンテキストフィルターを適切にスキップします。

Tips

  • 連結で複数値フィールドを使用する場合は、コンテキストフィルターの「その他」セクションで「複数値を許可」を有効にしてください
  • 空のフィールドを適切に処理するために、empty_value 設定と Views の対応する例外値を使用してください
  • このプラグインは、カスタムエンティティを含む Drupal インストール内の任意のコンテンツエンティティタイプで動作します
  • フィールドプロパティ名は Drupal のフィールド API 規則に従います。エンティティリファレンスには ':target_id'、単純なフィールドには ':value'、リンクフィールドには ':uri' または ':title' を使用します
  • デバッグ時は、エンティティがルートパラメーターで適切に利用可能であることを確認してください。エンティティタイプのマシン名はルートパラメーターと一致する必要があります

Technical Details

Hooks 1
hook_help

モジュールのヘルプページにヘルプテキストを提供

Troubleshooting 4
ソースフィールドが空の場合、View が結果なしまたはエラーを表示する

'empty_value' 設定でフォールバック値を返すように構成し、コンテキストフィルターの「例外」セクションで対応する例外値を設定して、空の場合にフィルターをスキップします。

複数値フィールドから最初の値のみが使用される

「複数値の処理」が「値を連結」に設定されていること、およびコンテキストフィルターの「その他」セクションで「複数値を許可」が有効になっていることを確認してください。

必要なフィールドがフィールド選択ドロップダウンに表示されない

フィールドが選択したエンティティタイプに設定されていることを確認してください。プラグインはエンティティタイプのフィールドストレージ定義に存在するフィールドのみを表示します。

現在のページからエンティティが検出されない

プラグインはルートパラメーターを使用して現在のエンティティを検出します。エンティティは直接のルートパラメーター(正規のエンティティページなど)である必要があります。他のコンテキストに埋め込まれたエンティティは検出されない場合があります。