73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
const path = require(`path`);
|
|
const { createFilePath } = require(`gatsby-source-filesystem`);
|
|
|
|
exports.onCreateNode = ({ node, getNode, actions }) => {
|
|
const { createNodeField } = actions;
|
|
|
|
if (node.internal.type === `MarkdownRemark`) {
|
|
var slug = createFilePath({ node, getNode, basePath: `pages` });
|
|
createNodeField({
|
|
node,
|
|
name: `slug`,
|
|
value: slug,
|
|
});
|
|
}
|
|
};
|
|
|
|
exports.createPages = async ({ graphql, actions }) => {
|
|
const { createPage } = actions;
|
|
|
|
const result = await graphql(`
|
|
query {
|
|
postsRemark: allMarkdownRemark {
|
|
edges {
|
|
node {
|
|
fields {
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
}
|
|
tagsGroup: allMarkdownRemark {
|
|
group(field: frontmatter___tags) {
|
|
fieldValue
|
|
}
|
|
}
|
|
categoriesGroup: allMarkdownRemark {
|
|
group(field: frontmatter___categories) {
|
|
fieldValue
|
|
}
|
|
}
|
|
}
|
|
`);
|
|
|
|
result.data.postsRemark.edges.forEach(({ node }) => {
|
|
createPage({
|
|
path: node.fields.slug,
|
|
component: path.resolve(`./src/templates/post.js`),
|
|
context: {
|
|
slug: node.fields.slug
|
|
}
|
|
});
|
|
});
|
|
|
|
result.data.tagsGroup.group.forEach((tag) => {
|
|
createPage({
|
|
path: `/tags/${tag.fieldValue}/`,
|
|
component: path.resolve(`./src/templates/tag.js`),
|
|
context: {
|
|
tag: tag.fieldValue
|
|
}
|
|
});
|
|
});
|
|
|
|
result.data.categoriesGroup.group.forEach((category) => {
|
|
createPage({
|
|
path: `/categories/${category.fieldValue}/`,
|
|
component: path.resolve(`./src/templates/category.js`),
|
|
context: {
|
|
category: category.fieldValue
|
|
}
|
|
});
|
|
});
|
|
}; |