Craft CMS のエントリーのタイトル欄に他のフィールドの最初のN文字を自動で入れる方法

Craft CMS のエントリーではタイトル欄は必須項目として扱われますが、ユーザーが入力せずに、他のフィールドの値を流用することができます。今回は、タイトル欄に他のフィールドの最初のN文字を自動で入れる方法をご紹介します。

Craft CMS Logo

Craft CMS のエントリーではタイトル欄は必須項目として扱われますが、ユーザーがわざわざ入力せずに、他のフィールドの値を流用することができます。

今回は、タイトル`欄に他のフィールドの最初の N 文字を自動で入れる方法をご紹介します。

入力タイプの調整

まずはセクションの Entry types(入力タイプ) を開き、 Show title field(タイトルのフィールドを見る) のチェックを外します。チェックを外すと、 Title Format(タイトル形式) 欄が入力できるようになります。

このあたりの詳しい説明は下記の記事をご覧ください。

タイトル形式の設定

この Title Format(タイトル形式)欄には、Twig のテンプレートを書くことができます。例えば、今回は description というテキストフィールドの最初の 20 文字、20文字以下の場合は全てを自動でタイトル欄にセットするようにしたいと思います。

このような場合は、下記のように Title Format(タイトル形式) 欄に入力します。

{{ object.description|length > 20 ? object.description|slice(0, 20) ~ '...' : object.description }}

全体が三項演算子の形になっていて、そのエントリー自体の情報は object という変数にセットされています。

分解して簡単に解説します。

object.description|length > 20

description フィールドの文字数( object.description|length )が 20 文字を超える場合( > 20 )は、

? object.description|slice(0, 20) ~ '...'

description フィールドの最初の 20 文字を抜き出して( object.description|slice(0, 20) )、 ... を連結( ~ '...' )します。

: object.description

20 文字までの場合は、そのまま出力します。

なお、ここでは description フィールドがプレーンテキストである想定になっていますが、リッチテキストフィールドの場合は下記の記事を参考にして文字列を抜き出してみてください。

以上です。

【参考】

Published 2017-09-22
Updated 2019-06-25