Как определить пути разметки страниц Гэтсби в одном файле? - PullRequest
0 голосов
/ 05 июня 2018

Bu default, Gatsby использует frontmatter для определения путей, например:

---
path: /example-page
---

, а затем работает с ним через GraphQL.

Каков наилучший способ определить эти пути для всех файлов уценки, не записывая часть frontmatter в каждый файл, а, например, в один файл, например, так:

[
    {
        "title": "Example",
        "path": "/example-page.md"
    }
]

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете сделать это, добавив путь при создании страницы.

Добавьте это в 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/

...