Что такое GatsbyJS?
Gatsby — это фреймворк для создания молниеносных веб-сайтов и веб-приложений. На основе React и GraphQL, Gatsby предоставляет вам все необходимое для создания и запуска вашего следующего проекта.
Перейдите на эту страницу здесь
Почему стоит выбрать Contentful CMS?
Contentful — это безголовая система управления контентом (CMS). Вы загружаете свой контент (будь то текст, изображения или видео) в Contentful, а оттуда можете организовывать и редактировать его по своему усмотрению.
Узнайте все подробности здесь
Необходимые условия
В этой заметке предполагается, что у вас уже настроен проект Gatsby. Если вам нужно настроить проект, перейдите на эту страницу, а затем вернитесь обратно.
Интеграция Gatsby с Contentful
npm install gatsby-source-contentful
Как это использовать?
Создайте конфигурационный файл gatsby и добавьте в него следующий код
plugins: [
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: `your_space_id_grab_it_from_contentful`,
accessToken: `your_token_id_grab_it_from_contentful`,
},
},
]
Соедините ваш сайт gatsby и contentful CMS.
Вот пример того, как выглядит GraphQL-запрос…
import React from 'react'
import Layout from '../components/Layout'
import { graphql, Link, useStaticQuery } from 'gatsby'
import * as styles from './blog.module.scss'
import Meta from '../components/head'
const BlogPage = () => {
const { allContentfulBlogPost: { edges } } = useStaticQuery(graphql`
query {
allContentfulBlogPost (
sort: {
fields: publishedDate
order: DESC
}
) {
edges {
node {
title
slug
# publishedDate(fromNow: true)
# format uses momentjs
publishedDate(formatString: "MMMM Do, YYYY")
}
}
}
}
`)
return (
<Layout>
<Meta title="Blogs" />
<h1>Blog</h1>
<ol className={styles.posts}>
{edges.map((edge, index) =>(
<li key={index} className={styles.post}>
<Link to={`/blog/${edge.node.slug}`}>
<h2>{edge.node.title}</h2>
<p>{edge.node.publishedDate}</p>
</Link>
</li>
))}
</ol>
</Layout>
)
}
export default BlogPage
Поговорим позже!