プレースホルダー記法
コンテンツ情報の置換
以下の箇所で、テキスト内に対象コンテンツの情報を取り込むためのプレースホルダー記法が使用できます。
- モデル: プレビューURL・公開URL
- Webhook: ペイロード
- FTスキーマ: コンテンツ参照要素
- FTスキーマ: コンテンツリンク要素
コンテンツ自身の情報
プレースホルダー | 置換内容 |
|---|---|
{{content._id}} | コンテンツID |
{{content._model}} | モデルのLUID |
{{content._model._name}} | モデル名 |
{{content._status}} | コンテンツの公開ステータス |
{{content._space}} | スペースのLUID |
{{content._space._name}} | スペース名 |
{{content._title}} | コンテンツのタイトル |
{{content._published_at}} | コンテンツの公開日 |
{{content._last_published_at}} | コンテンツの最終公開日 |
{{content._updated_at}} | コンテンツの更新日 |
{{content._created_at}} | コンテンツの作成日 |
コンテンツの公開ステータスについて
draft: 下書き
published: 公開中
published_draft: 公開中かつ下書きあり(上書き公開の準備中)
archive: アーカイブ済み
deleted: 削除された(削除をトリガーとしてWebhook送信時のみ取得されます)
フィールドに入力した内容
プレースホルダー | 置換内容 |
|---|---|
{{content.<フィールドのLUID>}} | 指定フィールドに登録した値 |
{{content.<フィールドセットフィールドのLUID>.<フィールドのLUID>}} | 指定フィールドセット内のフィールドに登録した値 |
メディアの情報
プレースホルダー | 置換内容 |
|---|---|
{{content.<メディアフィールドのLUID>.url}} | 指定メディアフィールドに登録されたメディアのURL |
{{content.<メディアフィールドのLUID>.alt}} | 指定メディアフィールドに登録されたメディアの代替テキスト(alt属性) |
参照コンテンツの情報
プレースホルダー | 置換内容 |
|---|---|
{{content.<コンテンツ参照フィールドのLUID>._title}} | 指定コンテンツ参照フィールドに設定されたコンテンツのタイトル |
{{content.<コンテンツ参照フィールドのLUID>.<フィールドのLUID>}} | 指定コンテンツ参照フィールドに設定されたコンテンツ内の入力内容 |
言語
プレースホルダー | 置換内容 |
|---|---|
{{lang}} | Webhook利用時: トリガーとなった操作を実施したコンテンツの言語キー |
{{langs}} | そのコンテンツに作成されている言語キーの一覧 |
{{langs}} 利用時の注意
- 配列ではなく、配列形式の「文字列」として置換されます。
区切りがシングルクォート(')のため、そのままではJSONとしてパースできません。受け取る側で独自のパース処理が必要です(後述の利用例を参照)。 - Webhookのペイロードでは、必ずダブルクォート(
")で囲んでください。"langs": {{langs}}のように囲まずに書くと、置換後のペイロードがJSONとして不正になり、Webhookは送信されません。 - 言語の並び順は保証されません。
メイン言語が先頭になるとは限らないため、順番に依存した処理は避けてください。 - 「コンテンツのサブ言語のみ削除」トリガーでは、削除される言語も含まれます。
Webhookは削除処理の直前に送信されるため、削除前の言語一覧で置換されます。削除された言語は{{lang}}で取得できます。
利用例
「FTスキーマ: コンテンツ参照要素」の例
この例では、以下のような置換処理を行います。
- リンク先URL: slug フィールド(1行テキストフィールド)の値
- タイトル: meta フィールド(フィールドセット)内の title フィールド(1行テキスト)の値
- カテゴリー名: category フィールド(コンテンツ参照)に設定されたコンテンツの name フィールド(1行テキスト) の値
- サムネイル画像: image フィールド(メディアフィールド)に設定されたメディア
<a class="card-link" href="/ja/help/usage/{{content.slug}}">
<h4 class="title">{{content.meta.title}}</h4>
<p class="category-name">{{content.category.name}}</p>
<img class="thumbnail" src="{{content.thumbnail.url}}">
</a>以下のような置換結果になります。
<a class="card-link" href="/ja/help/usage/etc-placeholder-notation">
<h4 class="title">プレースホルダー記法</h4>
<p class="category-name">その他</p>
<img class="thumbnail" src="https://cms-assets.nilto.com/spaces/668473005/media/2120092731/_/mcp-setup-claude-01.webp">
</a>「Webhook: GitHub Actions(repository_dispatch を使用)」の例
以下Payload例のとき
{
"event_type": "nilto_update",
"client_payload": {
"content_id": {{content._id}},
"model": "{{content._model}}",
"space": "{{content._space}}",
"status": "{{content._status}}",
"title": "{{content._title}}",
"lang": "{{lang}}",
"skip_ci": {{content.skip_ci}},
"category": "{{content.category.slug}}"
}
}以下のような置換結果になります。
{
"event_type": "nilto_update",
"client_payload": {
"content_id": 1234567890,
"model": "articles",
"space": "production",
"status": "published",
"title": "プレースホルダー記法",
"lang": "ja",
"skip_ci": false,
"category": "etc"
}
}GitHub Actions側での利用イメージ (.github/workflows/main.yml) は以下です。
jobs:
build:
# 本番用スペース (LUID: 'production') かつ 'skip_ci' フィールドが false の場合のみビルドを実行する例
if: github.event.client_payload.space == 'production' && github.event.client_payload.skip_ci == false
runs-on: ubuntu-latest
steps:
- name: Log Category
run: echo "Building category: ${{ github.event.client_payload.category }}"
- name: Build and Deploy
run: npm run build「Webhook: Slack通知用Payload」の例
{
"blocks": [
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*モデル:*\n{{content._model._name}}"
},
{
"type": "mrkdwn",
"text": "*ID:*\n`{{content._id}}`"
}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*タイトル:*\n{{content._title}}"
}
}
]
}「Webhook: 作成済みの言語一覧を送信」の例
以下Payload例のとき
{
"content_id": {{content._id}},
"lang": "{{lang}}",
"langs": "{{langs}}"
}以下のような置換結果になります。
{
"content_id": 1234567890,
"lang": "en",
"langs": "['ja', 'en']"
}受け取る側でのパース例(JavaScript)
// シングルクォートをダブルクォートに置き換えてからJSONとしてパースする
const langs = JSON.parse(payload.langs.replace(/'/g, '"'));
// => ["ja", "en"]「プレビューURL・公開URL」の例
https://www.nilto.com/{{lang}}/help/usage/{{content.slug}}メディア情報の置換
以下の箇所で、テキスト内に対象メディアの情報を取り込むためのプレースホルダー記法が使用できます。
- FTスキーマ: 内部画像要素
- FTスキーマ: メディアリンク要素
FTスキーマの「外部画像要素」については、メディア情報の置換が利用できません。
{{url}} の箇所に、URL入力フォームに指定した値が置換されます。
メディアの情報
プレースホルダー | 置換内容 |
|---|---|
{{media.url}} | メディアのURL |
{{media.alt}} | メディアに設定した代替テキスト |
{{media.poster}} | メディアに設定したposter画像のURL |
利用例
FTスキーマ: 内部画像要素
<img src="{{media.url}}?width=200&height=200" alt="{{media.alt}}" />NILTOにアップロードしたメディアは、URLにパラメータを付加することでリサイズ、トリミング、フォーマット変換などの最適化処理を行えます。例: リサイズ 縦横200px
https://cms-assets.nilto.com/spaces/111111111/media/222222222/_/img_media.webp?width=200&height=200使用できるパラメーターの種類や詳細な使い方に関してはImage Optimizer referenceをご確認ください。