Craft CMS のエントリーではタイトル欄は必須項目として扱われますが、ユーザーが入力せずに、他のフィールドの値を流用することができます。今回は、タイトル欄に他のフィールドの最初のN文字を自動で入れる方法をご紹介します。
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
フィールドがプレーンテキストである想定になっていますが、リッチテキストフィールドの場合は下記の記事を参考にして文字列を抜き出してみてください。
以上です。
【参考】