Gatsby / Drupal 8-使用媒体模块时获取图像(安装Acquia Lightning)

时间:2019-03-06 22:04:47

标签: drupal drupal-8 gatsby acquia

在标准Drupal 8安装中,在节点上使用图像,通过GraphQL相当容易获得图像。这里有很好的例子: https://github.com/gatsbyjs/gatsby/tree/master/examples/using-drupal

使用Acquia Lightning安装配置文件(或者如果您只是在使用我期望的媒体模块),媒体以不同的方式添加图像,在GraphiQL中,我看到关系中的媒体字段,其中唯一的子字段是__typename

python3 myfile.py

我还可以查看allMediaImage(或类似图像),在其中我可以访问图像本身。我还可以将所有节点信息都放在“关系”中,但是我当然需要将节点数据作为主要信息。我真的不了解将查询与节点绑定在一起的最佳方法。

Run Python File in Terminal

我希望我可以以其他方式创建JSON,也许可以更轻松地访问图像。否则,首先获取节点ID的方法,然后使用该方法选择适当的媒体。任何想法

1 个答案:

答案 0 :(得分:1)

看起来您已经解决了。但是我要发布答复给其他任何试图弄清这一点的人。

在Gatsby中使用Drupal节点要求您深入了解节点与媒体实体之间的关系,然后然后深入了解媒体实体与文件之间的关系。

我正在使用一个简单的Drupal 8.6.15安装,并启用了核心Media和(实验性)Media Library。并且,我在 Article 内容类型中添加了一个名为 Image Asset 的媒体字段(图像参考)(我删除了常规的 Image 字段)。 / p>

这是我的graphql查询的样子...

query ArticleQuery{
  allNodeArticle {
    edges {
      node {
        # Use the node ID for the key in GatsbyJS
        drupal_internal__nid
        # Access the Article's text info
        created(formatString: "DD MMMM YYYY")
        title
        body {
          value
          summary
        }
        # Here is where I access the Image Asset field
        relationships {
          field_image_asset {
            relationships {
              field_media_image {
                localFile {
                  childImageSharp {
                    fluid(maxWidth:1200) {
                      ...GatsbyImageSharpFluid
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}