Drupalのエンティティ(ノード、ユーザーなどの概念)にカスタムデータフィールド(属性情報)を持たせる。
フィールドAPIは、Drupalのエンティティにカスタムデータフィールドを持たせ、フィールドデータの保存、ロード、編集そしてレンダリングをサポートします。フィールドAPIを利用することで、(ノード、ユーザーなどの)あらゆるエンティティタイプは、カスタムフィールドを持つことが出来るようになります。他のモジュールはウェブブラウザーからカスタムフィールドを操作するためのユーザーインターフェース、および様々な種類のデータタイプ、フォーム部品、そしてディスプレイフォーマットを提供することが出来ます。
フィールドAPIはフィールドとそのインスタンス、そしてバンドルというコンセプトの2つの主な構造を定義します。フィールドはエンティティに持たせる属性データの特定のタイプを定義します。フィールドインスタンスはひとつのバンドルに持たせたフィールドです。バンドルとは、Field Attach API によってグループとして扱われ、1つのエンティティタイプに関連付けられるフィールドのセットの事です。
例えば、サイト管理者が「記事」タイプのノードにサブタイトルと、写真の属性を持たせたいとします。フィールドAPI もしくは Field UI モジュールを使うことで、サイト管理者は「サブタイトル」いう名前のテキストタイプのフィールドと、「写真」という名前のイメージタイプのフィールドを作ることが出来ます。サイト管理者は、(繰り返しますが)ブラウザのUIから、「記事」バンドルのノードに持たせる「サブタイトル」というフィールドと、同じく「記事」バンドルのノードに持たせる「写真」というフィールドの2つのフィールドインスタンスを作成します。ノードのシステムが「記事」タイプのノードの全てのフィールドを読み込むのに Field Attach API を利用している場合、エンティティタイプ(ここではノード)とそのバンドルとしてコンテンツタイプ(ここでは「記事」)が渡されます。field_attach_load() 関数はここで「記事」バンドルのノードのフィールドとして「サブタイトル」と「写真」のフィールドを読み込みます。
フィールドの定義は「キー、値」のペアで表現されます。
array $field:
フィールドインスタンスの定義はキー/値のペアの配列によって表現されます。
array $instance:
フィールドインスタンスのレンダー配列については、field_attach_view() に説明があります。
バンドルはエンティティタイプとバンドル名の2つの文字列によって表されます。