我正在尝试向我的gatsby项目添加第二种类型的内容,'资源',以及帖子。 获取资源可以,但帖子已经消失。
如何设置第二种内容的步骤,以便从帖子发布到帖子和(在我的情况下)资源?
拥有以下内容:
gatsby-config.js
中的:
{
resolve: 'gatsby-source-filesystem',
options: {
path: `${__dirname}/src/pages`,
name: 'pages',
},
resolve: 'gatsby-source-filesystem',
options: {
path: `${__dirname}/src/resources`,
name: 'resources',
}
}
在/ templates中,我添加了resource.js
:
import React from 'react';
import Helmet from 'react-helmet';
export default function Template({data}) {
const {markdownRemark: resource} = data;
return (
<div>
<h1>{resource.frontmatter.title}</h1>
<div dangerouslySetInnerHTML= {{__html:resource.html}} />
</div>
)
}
export const resourceQuery = graphql`
query ResourceByPath($path: String!) {
markdownRemark(frontmatter: { path: {eq: $path} }) {
html
frontmatter {
path
title
}
}
}
`
我的index.js
(我希望我的资源列出的位置)是列出资源。但是在page-2
我有相同的代码,我得到资源,而不是帖子。
这是gatsby-node.js
:
const path = require('path');
exports.createPages = ( {boundActionCreators, graphql}) => {
const {createPage} = boundActionCreators;
const postTemplate = path.resolve(`src/templates/post.js`);
return graphql(`{
allMarkdownRemark {
edges {
node {
html
id
frontmatter {
path
title
date
}
}
}
}
}`)
.then(res => {
if(res.errors) {
return Promise.reject(res.errors);
}
res.data.allMarkdownRemark.edges.forEach(({node}) => {
createPage({
path: node.frontmatter.path,
component: postTemplate
})
})
})
}