管理機能
Drupalのフィールド選びについて
LYZONエンジニアの加藤です。
この記事では、Drupalのフィールドの種類と選び方について解説します。
フィールドとは何か?
Drupalにおける「フィールド」とは、コンテンツタイプに追加できるデータ入力の単位です。
例えばニュース記事であれば「タイトル」「本文」「公開日」「サムネイル画像」などがそれぞれフィールドにあたります。
Drupalでは管理画面から標準でフィールドの追加・設定ができ、フィールドの型(種類)が豊富に用意されています。
コンテンツタイプを設計するうえで、「どのフィールドを選ぶか」は非常に重要です。
テキスト系のフィールド
最もよく使うのがテキスト系のフィールドです。Drupalには以下の種類があります。
| フィールド種別 | 特徴 | 用途例 |
|---|---|---|
| テキスト(プレーン) | 書式なしの短いテキスト | タイトル、キャッチコピー |
| テキスト(長文) | 書式なしの長いテキスト | 説明文、メモ |
| テキスト(書式付き) | HTMLタグやWYSIWYGエディタが使える | 記事本文 |
| テキスト(書式付き・長文) | 書式付きの長文 | ブログ本文、詳細説明 |
迷ったら「本文に使う → 書式付き長文」「一行の入力に使う → プレーンテキスト」という基準で選ぶとよいです。
数値・真偽値系フィールド
数字やON/OFFを扱うフィールドです。
| フィールド種別 | 特徴 | 用途例 |
|---|---|---|
| 数値(整数) | 小数点なしの数値 | 在庫数、順番、年齢 |
| 数値(10進数) | 小数点ありの数値 | 価格、評価スコア |
| 真偽値(Boolean) | チェックボックス(ON/OFF) | 公開フラグ、おすすめフラグ |
価格のように小数が必要な場合は「10進数」を選ぶよう注意しましょう。整数フィールドに小数を入力しようとするとバリデーションエラーになります。
参照系フィールド
他のコンテンツやユーザー、タームと紐づけるためのフィールドです。Drupalの強力な機能のひとつです。
| フィールド種別 | 特徴 | 用途例 |
|---|---|---|
| エンティティ参照 | 他のノードやユーザーを参照 | 関連記事、投稿者 |
| タクソノミータームの参照 | カテゴリ・タグと紐づける | カテゴリ分類、タグ |
例えば「この記事が属するカテゴリ」を設定したい場合は、タクソノミータームの参照フィールドを使います。複数選択できるように設定することも可能です。
ファイル・メディア系フィールド
画像やPDFなどのファイルを扱うフィールドです。
| フィールド種別 | 特徴 | 用途例 |
|---|---|---|
| 画像 | 画像ファイルのアップロード | サムネイル、メイン画像 |
| ファイル | 任意のファイルのアップロード | PDF資料、Excelファイル |
| メディア参照 | メディアライブラリから参照 | 画像・動画の使い回し |
Drupal 8以降はメディアモジュールが標準搭載されており、「メディア参照」を使うと一度アップロードした画像を複数の記事で使い回せるため便利です。積極的に活用しましょう。
日付・リスト系フィールド
日付の管理や選択肢の提示に使うフィールドです。
| フィールド種別 | 特徴 | 用途例 |
|---|---|---|
| 日付 | 日付・日時の入力 | 公開日、イベント開催日 |
| リスト(テキスト) | あらかじめ決めた選択肢から選ぶ | ステータス、種別 |
| リスト(数値) | 数値の選択肢から選ぶ | 優先度(1〜5) |
リスト系フィールドは、入力値をあらかじめ制限したい場合に便利です。例えば「ステータス」フィールドで「draft / published / archived」の3択だけ入力させる、といった使い方ができます。
フィールド選びのまとめ
Drupalのフィールドは種類が多く最初は迷いがちですが、以下の判断基準を持っておくと選びやすくなります。
- 文章を入れたい → テキスト系(長さと書式の有無で選ぶ)
- 数字を入れたい → 数値系(整数 or 小数で選ぶ)
- ON/OFFを管理したい → 真偽値
- カテゴリ・タグと紐づけたい → タクソノミー参照
- 画像・ファイルを添付したい → 画像 or メディア参照
- 日付を管理したい → 日付
- 決まった選択肢から選ばせたい → リスト
まずはシンプルな構成からはじめて、必要に応じてフィールドを追加していくのがDrupal初心者にはおすすめのアプローチです。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Drupalのバージョンによって実装されている機能が異なります。