refactor(case-studies): generate pages from json
This commit is contained in:
57
gatsby-node.js
Normal file
57
gatsby-node.js
Normal file
@@ -0,0 +1,57 @@
|
||||
const { resolve } = require("path");
|
||||
const caseStudies = require("./src/data/case-studies.json");
|
||||
|
||||
exports.sourceNodes = ({ actions, createNodeId, createContentDigest }) => {
|
||||
Object.keys(caseStudies).forEach(key => {
|
||||
caseStudies[key].forEach((cs, i) => {
|
||||
const {
|
||||
title,
|
||||
titleColor,
|
||||
location,
|
||||
image,
|
||||
key_features,
|
||||
price,
|
||||
time_taken,
|
||||
date,
|
||||
content
|
||||
} = cs;
|
||||
const node = {
|
||||
path: `/services/${key}/case-study-${i + 1}`,
|
||||
type: key,
|
||||
title,
|
||||
titleColor,
|
||||
location,
|
||||
image,
|
||||
key_features,
|
||||
price,
|
||||
time_taken,
|
||||
date,
|
||||
content,
|
||||
id: createNodeId(`${key}-${i + 1}`),
|
||||
internal: {
|
||||
type: "CaseStudy",
|
||||
contentDigest: createContentDigest(cs)
|
||||
}
|
||||
};
|
||||
actions.createNode(node);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.createPages = async ({ actions }) => {
|
||||
const { createPage } = actions;
|
||||
const template = resolve(__dirname, `src/case-study.js`);
|
||||
Object.keys(caseStudies).forEach(key => {
|
||||
caseStudies[key].forEach((cs, i) => {
|
||||
const path = `/services/${key}/case-study-${i + 1}`;
|
||||
createPage({
|
||||
path,
|
||||
component: template,
|
||||
context: {
|
||||
pagePath: path,
|
||||
images: `/${key}-cs${i + 1}(.*).jpg$/`
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user