aofolts
12/6/2018 - 5:00 PM

gatsby / contentful — createContentTypePages

A createPages block that creates Gatsby pages from a Contentful content type.

const createProcessPages = new Promise((resolve,reject) => {
    resolve(
      graphql(
        `
          {
            pages: allContentfulProcess {
              edges {
                node {
                  slug
                  layout {
                    internal {
                      type
                    }
                  }
                }
              }
            }
          }
        `
      ).then(({
        errors,
        data
      }) => {
        if (errors) {
          console.log(errors)
          reject(errors)
        }

        const pages = data.pages.edges.map(entry => entry.node)

        pages.forEach(entry => {
          createPage({
            path: `/process/${entry.slug}`,
            component: templates['single-process'],
            context: {
              slug: entry.slug
            }
          })
        })
      })
    )
  })