const path = require('path') exports.createPages = async ({ actions, graphql }) => { const {createPage} = actions; const result = await graphql(` { courses: allMarkdownRemark( filter: {frontmatter: { content_type: {eq: "page_education"}, published: {eq: true}}} ){ edges{ node{ html frontmatter{ title path } } } } news: allMarkdownRemark( filter: {frontmatter: {content_type: {eq: "post"}, published: {eq: true}}}, sort: {fields: [frontmatter___date], order: DESC} ) { edges{ node{ frontmatter{ title slug date(formatString: "DD.MM.YYYY") } html } } } }`) if( result.errors ){ throw result.errors; } const courseTemplate = path.resolve(`./src/components/templates/courseTemplate.js`); const courses = result.data.courses.edges; courses.forEach(({node}) => { createPage({ path: node.frontmatter.path, component: courseTemplate, }) }); /////////////////////////////////////////////////////////////////// const newsTemplate = path.resolve(`./src/components/templates/news.js`); const posts = result.data.news.edges; const postsPerPage = 5; const numberOfNewsItems = posts.length; const numberOfNewsPages = Math.ceil(numberOfNewsItems / postsPerPage); for (let pageIndex = 0; pageIndex < numberOfNewsPages; pageIndex++) { const pageNumber = pageIndex + 1; const path = pageIndex === 0 ? '/news' : `/news/${pageNumber}`; const skip = pageIndex * postsPerPage; function getPreviousPageLink() { if (!pageIndex) return null if (pageIndex === 1) return '/news' return `/news/${pageIndex}` } function getNextPageLink() { if (pageNumber < numberOfNewsPages) return `news/${pageNumber + 1}` return null } createPage({ path, component: newsTemplate, context: { limit: postsPerPage, skip, next: getNextPageLink(), prev: getPreviousPageLink(), }, }) } }