【Craft 4.5 の新機能】Element Index のリラベルについて

Craft 4.5 から、フィールドレイアウト上で設定したラベルで Element Index のフィールド名が上書きされるようになりました。

これまで、以前ご紹介した自作プラグインのインストールが必要だったものが、標準機能として搭載された形です。
個人的に待ち望んでいた機能なので、とても嬉しいですね。

そこで、Element Index のリラベル機能について、改めて確認しておこうと思います。
これは Craft CMS Advent Calendar 2023 13日目の記事です。

Craft CMS のフィールド名は、どこで決まるのか?

そもそもとして、フィールド編集画面でセットした 名前 がフィールド名の初期値となります。

フィールド編集画面のサンプル

Craft CMS では、(リレーション系のフィールドを除き)フィールドごとにテータベースのカラムが作成されるため、気軽にフィールドを追加していくと MySQL の制限に引っかかったり、負荷が上がってしまう可能性があります。

そのため、フィールドタイプ別に必要最低限な数だけを用意し、フィールドレイアウトを利用してフィールドを使い回すことになります。

そこで、フィールドの利用先ごとに ラベル を設定して対応します。

フィールドレイアウト上での上書き設定

ブログ セクションのエントリタイプを例に、見てみましょう。
なお、従来「入力タイプ」としていましたが、以降は管理画面のテキストに合わせて「エントリタイプ」と表記します。

フィールドレイアウト画面のサンプル

フィールドレイアウトに配置されたフィールドは、それぞれ ラベル をセットできます。

上のキャプチャ画像では、ハンドル text_singleLine のフィールドのラベルが「概要文」になっているのを確認できます。

フィールドレイアウト画面のエレメントエディターのサンプル

ラベルを変更する場合は、フィールドレイアウトにセットされた個々のフィールドの右側にある歯車アイコンをクリックし、右側に表示されるエレメントエディタで編集します。

エントリ編集画面のサンプル

エントリの編集画面にも反映されているのを確認できました。

Element Index がリラベルされているか、確認

必要な設定を終えたら、セットした「ラベル」が反映されているか Element Index で確認してみましょう。

Element Index のサンプル:期待通りの例

ブログ セクションのエントリ一覧は、期待通り「概要文」と表記されています。

Element Index のサンプル:意図しない例

一方、すべてのエントリ では、フィールド名がそのまま表示されてしまいます。

どうしてこのような違いが生じるのでしょうか?

「すべてのソースでフィールドのラベルが一致する場合のみ」という制限

実は、Element Index でリラベルが適用されるのは、すべてのソースでフィールドのラベルが一致する場合のみという制限があります。

フィールドレイアウト画面のサンプル(ニュース)

今回の場合、ニュース セクションのエントリタイプでハンドル text_singleLine のフィールドのラベルを「リード文」としていました。

そのため、すべてのエントリ ではフィールド名がそのまま表示されてしまいます。

なお、すべてのエントリ に限らず

  • 同一セクションで複数のエントリタイプを持つ場合
  • カスタムソースで複数のセクションを横断して一覧化する場合

なども同様の制限が適用されますので、注意しましょう。

まとめ

今回は標準機能として搭載された Element Index のリラベルについて、再確認してみました。

すべてのソースでフィールドのラベルが一致していないとフィールド名が出力されるという制限はあるものの、使いどころは多そうですよね。

余談になりますが、Craft 5 ではフィールドのインスタンス機能が搭載されます。
フィールドレイアウトでラベルと一緒にハンドルを変更できるようになるため、この制限がなくなるのでは?と期待しています。