Вы можете сделать это, добавив путь при создании страницы.
Добавьте это в gatsby-node
:
const { createFilePath } = require(`gatsby-source-filesystem`);
exports.onCreateNode = ({ node, getNode, boundActionCreators }) => {
const { createNodeField } = boundActionCreators
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({
node,
getNode,
basePath: `pages`
})
createNodeField({
node,
name: `slug`,
value: `/pages${slug}`
})
}
};
createFilePath
включите файлы разметки в каталоге pages
в /pages/slug
.
createNodeField
создает новое поле для запроса с именем 'slug'.
Теперь в graphql
вы можете получить доступ к слагу:
{
allMarkdownRemark {
edges {
node {
fields {
slug
}
}
}
}
}
Затем вы можете как обычно создавать свои страницы, используя новое поле слагов в качестве пути к странице.
С этим вы можете добавить свой заголовок и все, что вам нужно в данных, доступных в graphql.
Примерздесь: https://www.gatsbyjs.org/tutorial/part-seven/