先日 Craft CMS と Gatsby で詳細ページを出すとかを試した。
Gatsby の File System Route API ができたらしくこれを使うと gatsby-node.js を使うのではなく、ページ用のファイルを置くことで、そこのページクエリで詳細ページを生成することが出来る。
File System Route API | Gatsby
https://www.gatsbyjs.com/docs/...
色々と記事を参考にさせてもらった。
- Gatsby.jsの新機能「File System Route API」を試してみる
https://zenn.dev/ryo_kawamata/... - GatsbyのFileSystemRouteAPIでさらに使いやすくなった | TOMILOG
https://blog.ryou103.com/post/...
ひとまず詳細ページ用の {craftTestTestEntry.slug}.js
をsrc/pages/test/{craftTestTestEntry.slug}.js
という感じで作成する。
import React from "react" import {graphql} from 'gatsby'; const PostPage = ({data}) => { return ( <div> <div className="content"> <h1>title: {data.craftTestTestEntry.title}</h1> <p>slug : {data.craftTestTestEntry.slug}</p> <p>id : {data.craftTestTestEntry.id}</p> <p>redactor</p> <pre>{data.craftTestTestEntry.testredactor}</pre> </div> </div> ); }; export const query = graphql` query($slug: String) { craftTestTestEntry(slug: {eq: $slug}) { id title url slug ... on Craft_test_test_Entry{ testredactor testtags{ id title } } } } ` export default PostPage;
URLは slug をベースにして組み立てるようにした。
試した環境は Craft CMS 用の Gatsby Helper プラグインと gatsby-source-craft プラグインを使っている。
Query で取得したデータは {data}
で取り出せる。
単一のデータを取り出せればいいので、 craftTestTestEntry
で取得する。
これで確認すると /test/aaa
というURLで見ることが出来た。
以下のようなのがでてるのでこれは後で調べてみよう。
warn Using the global `graphql` tag is deprecated, and will not be supported in v3. Import it instead like: import { graphql } from 'gatsby' in file:
詳細ページがこれなら結構シンプルに使えそうな気がする。
アーカイブ系もつくれそうな気がするなぁ。