2018-07-17 23:33:55 +02:00
|
|
|
const path = require('path')
|
|
|
|
const { createFilePath } = require('gatsby-source-filesystem')
|
|
|
|
|
|
|
|
// Create slug & date for posts from file path
|
|
|
|
exports.onCreateNode = ({ node, actions, getNode }) => {
|
|
|
|
const { createNodeField } = actions
|
|
|
|
|
|
|
|
if (node.internal.type === 'MarkdownRemark') {
|
|
|
|
const fileNode = getNode(node.parent)
|
|
|
|
const parsedFilePath = path.parse(fileNode.relativePath)
|
|
|
|
|
|
|
|
// slug
|
|
|
|
const slugOriginal = createFilePath({ node, getNode })
|
|
|
|
const slug = `/${slugOriginal.substring(12)}` // remove date from file path
|
|
|
|
|
|
|
|
createNodeField({
|
|
|
|
node,
|
|
|
|
name: 'slug',
|
|
|
|
value: slug
|
|
|
|
})
|
|
|
|
|
|
|
|
// date
|
|
|
|
let date
|
|
|
|
|
|
|
|
if (node.frontmatter.date) {
|
|
|
|
date = `${node.frontmatter.date}`
|
|
|
|
} else {
|
|
|
|
date = `${parsedFilePath.name.substring(0, 10)}`
|
|
|
|
}
|
|
|
|
|
|
|
|
createNodeField({
|
|
|
|
node,
|
|
|
|
name: 'date',
|
|
|
|
value: date
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.createPages = ({ graphql, actions }) => {
|
|
|
|
const { createPage } = actions
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
const postTemplate = path.resolve('src/templates/post.jsx')
|
|
|
|
// const indexTemplate = path.resolve('src/templates/index.jsx')
|
|
|
|
// const tagPage = path.resolve('src/templates/tag.jsx')
|
|
|
|
// const categoryPage = path.resolve('src/templates/category.jsx')
|
|
|
|
|
|
|
|
resolve(
|
|
|
|
graphql(
|
|
|
|
`
|
|
|
|
{
|
|
|
|
allMarkdownRemark {
|
|
|
|
edges {
|
|
|
|
node {
|
|
|
|
fields {
|
|
|
|
slug
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`
|
|
|
|
).then(result => {
|
|
|
|
if (result.errors) {
|
|
|
|
/* eslint no-console: "off" */
|
|
|
|
console.log(result.errors)
|
|
|
|
reject(result.errors)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Creates Index page
|
|
|
|
// createPaginatedPages({
|
|
|
|
// edges: result.data.allMarkdownRemark.edges,
|
|
|
|
// createPage: createPage,
|
|
|
|
// pageTemplate: indexTemplate
|
|
|
|
// })
|
|
|
|
|
|
|
|
// Create Posts
|
|
|
|
result.data.allMarkdownRemark.edges.forEach(edge => {
|
|
|
|
createPage({
|
|
|
|
path: `${edge.node.fields.slug}`,
|
|
|
|
component: postTemplate,
|
|
|
|
context: {
|
|
|
|
slug: edge.node.fields.slug
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
// const tagSet = new Set()
|
|
|
|
// const tagMap = new Map()
|
|
|
|
// const categorySet = new Set()
|
|
|
|
|
|
|
|
// result.data.allMarkdownRemark.edges.forEach(edge => {
|
|
|
|
// if (edge.node.frontmatter.tags) {
|
|
|
|
// edge.node.frontmatter.tags.forEach(tag => {
|
|
|
|
// tagSet.add(tag)
|
|
|
|
|
|
|
|
// const array = tagMap.has(tag) ? tagMap.get(tag) : []
|
|
|
|
// array.push(edge)
|
|
|
|
// tagMap.set(tag, array)
|
|
|
|
// })
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (edge.node.frontmatter.category) {
|
|
|
|
// categorySet.add(edge.node.frontmatter.category)
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
|
|
|
|
// const tagFormatter = tag => route =>
|
|
|
|
// `/tags/${_.kebabCase(tag)}/${route !== 1 ? route : ''}`
|
|
|
|
// const tagList = Array.from(tagSet)
|
|
|
|
// tagList.forEach(tag => {
|
|
|
|
// // Creates tag pages
|
|
|
|
// createPaginationPages({
|
|
|
|
// createPage,
|
|
|
|
// edges: tagMap.get(tag),
|
|
|
|
// component: tagPage,
|
|
|
|
// pathFormatter: tagFormatter(tag),
|
|
|
|
// limit: siteConfig.sitePaginationLimit,
|
|
|
|
// context: {
|
|
|
|
// tag
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
// })
|
|
|
|
|
|
|
|
// const categoryList = Array.from(categorySet)
|
|
|
|
// categoryList.forEach(category => {
|
|
|
|
// createPage({
|
|
|
|
// path: `/categories/${_.kebabCase(category)}/`,
|
|
|
|
// component: categoryPage,
|
|
|
|
// context: {
|
|
|
|
// category
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
// })
|
|
|
|
|
|
|
|
resolve()
|
|
|
|
})
|
|
|
|
)
|
|
|
|
})
|
|
|
|
}
|