如何在 Gatsby 中处理有内容的内容数据

Posted

技术标签:

【中文标题】如何在 Gatsby 中处理有内容的内容数据【英文标题】:How to handle Contentful content data in Gatsby 【发布时间】:2016-10-15 11:27:43 【问题描述】:

我有兴趣使用Gatsby 使用来自Contentful 的内容构建一个Netlify 静态网站

Netlify 有这个很好的 Gatsby 入门指南: ​​https://www.netlify.com/blog/2016/02/24/a-step-by-step-guide-gatsby-on-netlify

但我有点不确定如何将 Contentful 融入其中。我是否需要编写脚本来将我的 Contentful 内容转换为 Gatsby 'markdown'?

任何想法、想法、链接表示赞赏!

【问题讨论】:

【参考方案1】:

自从发布这个问题以来,一个官方的 Contentful 插件被添加到 Gatsby 的收藏中(官方由 Gatsby 团队创建,不是 Contentful):https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-contentful

一个示例站点的源代码在这里:https://github.com/gatsbyjs/gatsby/tree/master/examples/using-contentful

该插件通过gatsby-transformer-remark 处理markdown 并生成生成的html,您可以通过Gatsby 的GraphQL 服务器使用来自the example proj 的类似查询来访问它:

 contentfulProduct(id:  eq: $id ) 
      productName 
        productName
      
      productDescription 
        childMarkdownRemark 
          html
        
      
      price
    

您可以使用该插件连接到 Content API(用于已发布的资产/内容)和/或 Preview API(用于已发布的草稿内容/资产)。

我们使用 NODE_ENV 从开发中的 Preview API 和生产中的 Content API 中提取。

【讨论】:

嗨,如果我必须获取 2 个 id(或更多)的数据,查询格式是什么。有没有像“in”这样的东西。请帮忙。【参考方案2】:

这是我用来从 Contentful 中提取数据的脚本: https://gist.github.com/ivanoats/e79ebbd711831be2536d1650890055c4

我在 gatsby 构建之前通过一个 npm 运行脚本运行它。

我很想开发一个插件或获得有关此过程的更好架构的想法。

我在Aerobatic blog 上写了一篇关于这种架构的文章,更详细地介绍了

【讨论】:

【参考方案3】:

目前最好的选择是编写一个脚本,将 Contentful 中的内容同步到 Gatsby 网站的 pages 目录。

不过,我们计划在 Gatsby 中添加支持,以实现半自动。早期的日子还在这里!更多内容请参见本期https://github.com/gatsbyjs/gatsby/issues/324

【讨论】:

我喜欢 webpack 加载器的想法。

以上是关于如何在 Gatsby 中处理有内容的内容数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在内容丰富的 Gatsby 中包含轮播组件?

如何访问 Gatsby 中“file”或“allFiles”GraphQL 查询返回的文件的文本内容?

如何在 graphQL 中获取 Gatsby 页面 HTML

无法从内容查询数据到 gatsby 项目

使用 graphql 在 Gatsby 中显示目录(降价文件)的内容

如何将 Gatsby 混合站点连接到 Apollo/Graphcool(或 Redux)?