amazeelabs/silverback_cloudinary

一个模块,它创建一个graphql字段,根据配置输入公开cloudinary图片URL。

1.4.5 2024-09-09 12:00 UTC

This package is auto-updated.

Last update: 2024-09-09 12:01:19 UTC


README

此模块提供了一个可以用于使用Cloudinary服务加载(响应式)图像的graphql数据生产者。

数据生产者接受原始图片URL作为参数,可选宽度、高度、尺寸和一个任意的cloudinary转换字符串,并生成一个包含图片HTML属性的JSON编码字符串(src、width、height、sizes、srcset)。

type Page {
  heroImage(
    width: Int
    height: Int
    sizes: [[Int!]!]
    transform: String
  ): String
}

您可以使用数据生产者如下

  addResolver('Page.heroImage',
    $builder->compose(
      // ...any other calls to data producers or callbacks that will return a string (image url), for example:
      //$builder->callback(function ($value) {
      //  return 'http://www.example.com/demo.jpg';
      //}),
      $builder->produce('responsive_image')
        ->map('image', $builder->fromParent())
        ->map('width', $builder->fromArgument('width'))
        ->map('height', $builder->fromArgument('height'))
        ->map('sizes', $builder->fromArgument('sizes'))
        ->map('transform', $builder->fromArgument('transform'))
      )
    )
  );

如果没有提供宽度,返回的数据将仅包含原始图片URL,编码为JSON

然后您可以这样查询数据

fragment Hero on Page {
  heroImage(
    # Display a 1600/800 header image by default.
    width: 1600
    height: 800
    sizes: [
      # For screens smaller than 800px, scale down to 780px width.
      [800, 780]
    ]
    transform: "co_rgb:000000,e_colorize:60"
  )
}

然后您收到的响应应该包含您构建显示图片所需的所有数据。

除了数据生产者之外,还有一个名为responsiveImage的指令,您可以直接在graphql模式中使用。因此,上面的代码可以变成

fragment Hero on Page {
  heroImage(
    # Display a 1600/800 header image by default.
    width: 1600
    height: 800
    sizes: [
      # For screens smaller than 800px, scale down to 780px width.
      [800, 780]
    ]
    transform: "co_rgb:000000,e_colorize:60"
  )
    @responsiveImage(
      width: "$width"
      height: "$height"
      sizes: "$sizes"
      transform: "$transform"
    )
}

其他部分

安装

Drupal

  • composer require amazeelabs/silverback_cloudinary
  • 确保您已按照Cloudinary仪表板上的说明设置了CLOUDINARY_URL环境变量(测试凭证:CLOUDINARY_URL=cloudinary://219736568324247:PsDMMn1fMdm2lj9TlJMICX25KEA@ddj1ybv54)
  • drush en silverback_cloudinary

Gatsby

  • yarn add @amazeelabs/gatsby-silverback-cloudinary
  • 确保您已设置了以下环境变量:CLOUDINARY_API_SECRETCLOUDINARY_API_KEYCLOUDINARY_CLOUDNAME
  • 在 gatsby-config.ts 中添加插件如下(非常重要:在 @amazeelabs/gatsby-source-silverback 插件之后)
{
  resolve: '@amazeelabs/gatsby-silverback-cloudinary';
}