Gatsby - 从 csv 文件中的参考字段制作流体图像宽度 ImageSharp

Posted

技术标签:

【中文标题】Gatsby - 从 csv 文件中的参考字段制作流体图像宽度 ImageSharp【英文标题】:Gatsby - make fluid Images width ImageSharp from reference field in csv-file 【发布时间】:2020-02-05 14:42:01 【问题描述】:

我从 csv 文件创建页面。该文件包含一个“图像”字段,其中包含/src/images/products/ 中图像的文件名和一个“类别”字段。

我想创建一个包含该类别的所有图像的类别页面。在 gatsby-node.js 中获取不同的类别以为每个类别创建一个页面:

// Create Categrorie pages from CSV
    const resultCategories = await graphql (`
        query 
            allCsvFile 
                distinct(field: category)
            
        
    `)
    resultCategories.data.allCsvFile.distinct.forEach( category => 
        createPage(
            // Path for this page — required    
            path: category.toLowerCase(),
            component: path.resolve(`./src/templates/catalog-categoriepage.js`),
            context: 
                Category: category
            
        )
    )

在 /src/templates/catalog-categoriepage.js 中,我在 graphql 中查询其他字段以生成项目列表:

export const query = graphql`
  query($Category: String!) 
    product: allCsvFile(filter: category: eq: $Category) 
      nodes 
        field1
        field2
        image
      
    
  
`

如何使用“图像”中的文件名为该页面创建流畅的图像? 我已经在“allFile”中有图片,但是如何通过“image”字段引用路径?

【问题讨论】:

【参考方案1】:

csv-File 必须包含文件系统中图像的相对路径,然后识别图像并获取 childImageSharp(如果安装了 gatsby-transformer-shap 和 gatsby-plugin-sharp)。

您可以使用 onCreateNode 在构建时操作节点。看: https://github.com/gatsbyjs/gatsby/issues/17783#issuecomment-533837059

【讨论】:

如何获取同一行引用的多个图像?

以上是关于Gatsby - 从 csv 文件中的参考字段制作流体图像宽度 ImageSharp的主要内容,如果未能解决你的问题,请参考以下文章

从 matplotlib 中的 .CSV 文件制作多线图

如何使用 gatsby-image 从数组中查询多个图像?

将 csv 文件中的日期字段读取到数据框中

为 csv 文件中的另一个字段识别具有特殊字符的值

从数据库中的 CSV 文件向字段添加值

从 Gatsby JS 制作 Axios post Req