【发布时间】:2021-07-14 18:03:09
【问题描述】:
我在使用 Gatsby + Contentful 设置正确的 URL 结构时遇到问题。
我的文件夹结构如下:
├── src
├── pages
├──── Learn (folder)
│ ├── index.js (contentful learn-template queries all pages)
│ ├── guides (folder)
├────└────
├─────────├── index.js (contentful guide-template queries all guides)
我正在使用gatsby-node.js 使用createPages 查询我的内容页面:
const path = require('path')
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions
const result = await graphql(`
query GetContent {
page: allContentfulPages(filter: {node_locale: {eq: "en-US"}}) {
nodes {
slug
}
}
guides: allContentfulGuides(filter: {node_locale: {eq: "en-US"}}) {
nodes {
slug
}
}
}
`)
result.data.page.nodes.forEach(page => {
createPage({
path: `${page.slug}`,
component: path.resolve(`src/pages/guides/index.js`),
context: {
slug: page.slug
},
})
})
result.data.guides.nodes.forEach(guides => {
createPage({
path: `${guides.slug}`,
component: path.resolve(`src/pages/guides/index.js`),
context: {
slug: guides.slug
},
})
})
}
我遇到的问题是 URL 看起来像这样:
http://localhost:8000/learn/{contenfulGuides}/
但我想实现这个:
http://localhost:8000/{contentfulPages}/{contentfulGuides}/
我到处寻找,但没有找到有关此的主题。
我想知道如何删除 URL 中的文件夹名称,而是粘贴内容丰富的页面 slug。
希望有人可以帮助我朝着正确的方向前进。
编辑:
我想有些人不明白我的意思,所以我将在这里更简单地解释一下。
我有 2 个内容模型,contentfulPages 和 contentfulSubPages。它们中的每一个都包含多个页面和子页面。现在,如果我使用模板文件夹,并且 URL 上方的 gatsby-node.js 看起来像这样:
http://localhost:8000/{contentfulPages}/
http://localhost:8000/{contentfulSubPages}/
两个分开的网址。但我想实现这一点:
http://localhost:8000/{contentfulPages/contentfulSubPages}/
【问题讨论】:
标签: reactjs gatsby contentful