Key value field
キーと値のペアをオプションの説明付きで保存するフィールドタイプを提供します。プレーンテキストと書式付きテキストの両方に対応しています。
key_value_field
インストール
composer require 'drupal/key_value_field:8.x-1.4'
composer require 'drupal/key_value_field:8.x-1.3'
概要
Key Value Fieldは、コンテンツ編集者がキーと値のペア形式で構造化データを保存できるDrupalフィールドモジュールです。各フィールドエントリはキー(識別子)、値(コンテンツ)、オプションの説明(管理用メモやコンテキスト用)の3つのコンポーネントで構成されます。
このモジュールは2種類のフィールドタイプを提供します:シンプルな文字列値用のプレーンテキストバージョンと、リッチコンテンツ用にテキストフォーマット(Basic HTML、Filtered HTMLなど)をサポートするロングテキストバージョンです。両方のバリアントは、効率的な検索とクエリのためにキー列にデータベースインデックスを含みます。
このモジュールは、メタデータ、設定スニペット、カスタム属性、API認証情報(機密でないもの)、またはエンティティにラベル付きの値を関連付ける必要があるその他の構造化データを保存するのに特に便利です。オプションの説明フィールドは、表示出力に影響を与えることなく、各キーと値のペアの目的や使用方法を文書化する方法を提供します。
Features
- 2種類のフィールドタイプ:シンプルなテキスト用のKey / Value (plain)と、テキストフォーマットをサポートする書式付きテキスト用のKey / Value (long)
- 3列のデータ構造:各フィールドエントリにキー(インデックス付き)、値、オプションの説明
- キーフィールドの最大長を設定可能(デフォルト255文字)、データベースレベルで強制
- コンテンツモデルの用語に合わせてキー、値、説明フィールドのウィジェットラベルをカスタマイズ可能
- コンテンツ編集者をガイドするための全入力フィールドでのプレースホルダーテキストサポート
- ウィジェット設定ごとに説明フィールドの有効/無効を切り替え可能
- 値のみまたは完全なキー:値形式を表示するフォーマッターオプション
- ロングテキストバリアント用のデフォルトテキストフォーマット設定
- 効率的なクエリと検索のためのキー列のデータベースインデックス
- 標準的なDrupalカーディナリティ設定による複数値フィールドのサポート
- 値が入力された際にキーを必須とする自動バリデーション
- Drupal 9.5、10、11に対応
Use Cases
製品仕様
Key/Valueフィールドを使用して、'重量:2.5kg'、'寸法:10x20x5cm'、'素材:アルミニウム'などの製品仕様を保存します。各仕様がキーと値のペアになり、説明フィールドで測定単位やデータソースを文書化できます。
API設定の保存
'endpoint_url'、'api_version'、'timeout_seconds'などのキーとそれに対応する値でAPIエンドポイント設定を保存します。説明フィールドで各設定の機能やドキュメントへのリンクを説明できます。
カスタムメタデータ属性
標準フィールドに収まらないカスタムメタデータをコンテンツに追加します。例えば、SEO目的で'schema.org'プロパティをキーと値のペアとして保存し、説明で各プロパティの使用方法を説明できます。
翻訳キーと値
キーが識別子で値が翻訳されたテキストである翻訳文字列やラベルを保存します。ロングテキストバリアントでは、テキストフォーマット付きの書式付きコンテンツが可能です。
機能フラグまたは設定
コンテンツアイテムの機能トグル名とその値(有効/無効、設定値)を保存し、エンティティごとの設定ストレージを可能にします。
Tips
- キーフィールドはデータベースでインデックスが付けられているため、Entity QueryやViewsを使用して特定のキー値でエンティティをクエリするのが効率的です
- 説明フィールドは各キーと値のペアが何を表すかの内部ドキュメントに使用してください - レンダリング出力には表示されません
- コンテンツモデルに合わせてウィジェットラベルをカスタマイズしてください - 例えば、'Key'を'プロパティ名'に、'Value'を'プロパティ値'に変更することで編集者のUXが向上します
- ロングテキストバリアントを使用する場合、エントリ間で一貫したフォーマットを確保するためにデフォルトテキストフォーマットを設定してください
- キーは条件付きで必須です - 値が入力された場合にのみ必須となり、空のフィールドエントリを許可します
- 複数値フィールドの場合、各デルタに異なるキーと値のペアを持つことができ、単一のエンティティに複数の属性を保存するのに便利です
Technical Details
Hooks 3
hook_help
ヘルプページでモジュールのヘルプテキストを提供
hook_theme
テーマ実装を宣言(現在は空で、空の配列を返す)
hook_field_info_alter
Drupal 10.2より前のバージョンとの後方互換性のためにフィールドタイプ定義を変更。古いDrupalバージョンでkey_valueフィールドタイプのカテゴリを設定します。
Troubleshooting 3
モジュールフォルダを削除して再ダウンロード/クローンし、'drush cr'または管理UIからすべてのキャッシュをクリアしてください。
値が入力された場合、キーフィールドは必須です。両方のフィールドを入力するか、両方を空のままにしてください。
キーの長さはデータベースレベルでバリデーションされます。キーを短くするか、フィールドストレージ設定で'キー最大長'を増やしてください(データが存在する前にのみ可能)。