これは Craft CMS Advent Calendar 2022 6日目の記事です。
先日のエントリでリッチエディタ(Redactor)で共通の値を使い回す話を書いた。
テキストエリアのフィールドで使う場合はどうするか、という話。

ひとまずはこのような感じでリファレンスタグを使えばグローバルの値を参照することができる。
Reference Tags | Craft CMS Documentation | 4.x
https://craftcms.com/docs/4.x/…
まぁ、この {globalset:262:testText1} をどうやって取り出すのかというのはあるが。
定義としては {<Type>:<Identifier>:<Property>} ということらしいので、、、
Identifier についてはグローバルの設定画面で

URLが /admin/settings/globals/262?site=default こんな感じなので 262 ということがわかる。
設定値をこのグローバルに集約しておけば、あとは Property の所をフィールドのハンドルにすることで使うことができる。
テンプレート側で出力するときは
<h2>test textarea 1</h2>
{{ entry.testTextarea1 }}
で出力すると、リファレンスタグがそのままでてしまうので、

テンプレート側に
<h2>test textarea 1</h2>
{{ entry.testTextarea1|parseRefs|raw }}
こんな感じで parseRefs フィルタと raw フィルタを追加することで処理される。
Filters | Craft CMS Documentation | 4.x
https://craftcms.com/docs/4.x/… raw - Documentation - Twig - The flexible, fast, and secure PHP template engine
https://twig.symfony.com/doc/3…

改行も反映させたいときは nl2br フィルタを付けるかんじで。
<h2>test textarea 1</h2>
{{ entry.testTextarea1|parseRefs|raw|nl2br }}

リファレンスタグを取得するのが若干難しいので、リッチエディタで使った方がよさそうな印象。
GraphQL で利用する場合
テキストエリアに入っている値を GraphQLで取得する場合は parseRefs の directive を利用する。
https://craftcms.com/docs/4.x/…
こんな感じのクエリで @parseRefs を付ける
query{
entries(section:"testStructure"){
title
... on testStructure_default_Entry{
testEditor
testTextarea1 @parseRefs
}
}
}

これでちゃんと Reference Tags が展開されて取得できる。
改めてドキュメントを見ていたら、 GraphQL API 部分のディレクティブが増えてるような気がする。
List of available directives
https://craftcms.com/docs/4.x/…
これはありがたい話だ。