Qandar

Q Cockpit CMSで他のコレクションとリレーションするには?

公開日:2021年9月2日

Answer

Collectionlinkを使います

Cockpit CMSでは他のコレクション(テーブル)と連携させるのは、フィールドタイプに「Collectionlink」を使います。

Fieldtypes

フィールドタイプに「Collectionlink」を使うと、エントリー編集画面で、リンクしたコレクションのデータを一覧から選択できるようになる他、リンクされたコレクションのエントリーからは、「どのエントリーとリンクされているか?」を確認できるようになります。

Collectionlinkを使うには、オプションJSONの項目で、どのコレクションとリンクするかなどを設定する必要があります。

{
  "link": "makers", // リンクするコレクション
  "display": "name", // jsonで出力する際にどの項目を表示するか
  "multiple": false, // 複数選択可能にするか?(タグなどを想定)
  "limit": false // 件数を制限するか?
}

リンクができると、そのエントリーの出力JSONに、リンクしたコレクションのデータが入ります。

{
  "id": "1",
  "title": "iPhone 12",
  "maker_id": {
    "_id": "6130b4c737393784d10000bd",
    "link": "makers",
    "display": "Apple (アップル)"
  },

という形です。

静的サイトジェネレータのように、ジェネレータ側で処理を加える場合には設定しない方が使い勝手が良い可能性もありますが、SPAのようにヘッドレスCMSの内容をそのまま表示する場合には、必須の項目かと思います。

新着Q&A