Как заставить слаг показываться в graphql с использованием NetlifyCMS и Gatsby? - PullRequest
0 голосов
/ 07 сентября 2018

При добавлении netlify cms на сайт, как можно заставить слаг показываться в graphql? У меня есть одна коллекция для поста в блоге, и все отображается, кроме слаг:

backend:
  name: git-gateway
  branch: master # Branch to update (optional; defaults to master)

media_folder: static/images
public_folder: /images

collections:
  - name: "blog"
  label: "Blog"
  folder: "content/blogPost"
  create: true
  slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
  fields: # The fields for each document, usually in front matter
    - { label: "Layout", name: "layout", widget: "hidden", default: "blog" }
    - { label: "Title", name: "title", widget: "string" }
    - { label: "Publish Date", name: "date", widget: "datetime" }
    - { label: "Featured Image", name: "thumbnail", widget: "image" }
    - { label: "Body", name: "body", widget: "markdown" }

А вот и мой запрос к графику: enter image description here

1 Ответ

0 голосов
/ 07 сентября 2018

slug в запросе GraphQL является , а не частью frontmatter полей в config.yml. Эти слизняки не связаны. Тот, на который вы ссылаетесь в своем запросе, находится с узла в Гэтсби.

Значение fields в запросе GraphQL выше отсутствует в вашем node. Это должно быть передано с использованием конфигурации gatsby-node.js, добавив его, как в следующем примере:

const { createFilePath } = require('gatsby-source-filesystem')

exports.onCreateNode = ({ node, boundActionCreators, getNode }) => {
  const { createNodeField } = boundActionCreators

  if (node.internal.type === `MarkdownRemark`) {
    const value = createFilePath({ node, getNode })
    createNodeField({
      name: `slug`,
      node,
      value,
    })
  }
}
...