これは Craft CMS Advent Calendar 2020 3日目の記事です。

Craft CMS の GraphQL と Gatsby をつかってページを静的にビルドしてみる。

先日かいたエントリを参考にCraft CMS には Gatsby Helper プラグインをインストールしておく。

Gatsby Helper, gatsby-source-craft プラグインともに、1.0.0-beta2(2020-12-02時点)だった。(アップデートしてなくて色々こけた)

先日のエントリの内容で gatsby develop で立ち上がるところまでは動いている前提。

立ち上げた GraphiQL で Craft CMS側のデータがみえているのも確認する。

GraphiQLでレスポンスを確認する。

{
  allCraftTestTestEntry(limit: 10) {
    nodes {
      id
      title
      url
    }
  }
}

これでひとまず10件のエントリが返ってくるのを確認。

index.js を編集する

import React from "react"
import { useStaticQuery, graphql } from "gatsby"

const RecentEntriesQuery = graphql`
  {
    allCraftTestTestEntry(limit: 10) {
      nodes {
        id
        title
        url
      }
    }
  }
`;

export default function Home() {
  const {allCraftTestTestEntry: {nodes}} = useStaticQuery(RecentEntriesQuery);
  return (
    <div>
        <h1>Hello world!</h1>
        <div className="flex flex-wrap -mx-4">
            {nodes.map(({id, title,url}) => (
                <p><a href={url}>{title}</a></p>
            ))}
        </div>
    </div>
  )
}

ひとまずこのように変更することで、GraphQLで取得した一覧がリストアップされる。

Twig を書く方が楽だなぁと思うところはあるが引き続き続けていく。