flownative / neos-canto

Canto 的 Neos 集成

安装: 506

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 4

分支: 5

开放问题: 4

类型:neos-package

v0.5.3 2023-08-14 08:27 UTC

README

MIT license Packagist

Canto 的 Neos 适配器

Flow 包允许您将存储在 Canto 中的资产(例如图片和其他文档)作为原生 Neos 资产在您的 Neos 网站中使用。

关于 Canto

Canto 提供了广泛的数字资产管理解决方案。该软件使处理图片、图形和视频文件变得更加容易。

关键功能

  • 无缝集成到 Neos 媒体浏览器中
  • 自动导入和清理 Canto 中的媒体资产
  • 将 Canto 中的元数据映射到 Neos

安装

Canto 连接器通过 Composer 以常规 Flow 包的形式安装。对于现有项目,只需将 flownative/neos-canto 包含在您的 Flow 或 Neos 分发的依赖项中即可。

$ composer require flownative/neos-canto

启用 Canto API 访问

  1. 在 Canto 中转到设置 > 配置选项 > API > API 密钥
  2. 点击 "创建 API 密钥"
  3. 填写一个有助于您理解该密钥用途的名称
  4. 填写 "重定向 URL",使用 https://<www.your-site.com>/flownative-canto/authorization/finish,使用您自己的域名(!)
  5. 记下新密钥的 "应用 ID"、"应用密钥" 和 "网站"

允许 API 密钥的客户端凭证模式

要能够从命令行使用 Canto 连接或使用下面描述的 webhook 功能,必须启用客户端凭证模式。

  1. 在 Canto 中转到设置 > 配置选项 > API > API 密钥
  2. 编辑用于 Neos 集成的 API 密钥
  3. 启用 "支持客户端凭证模式" 并点击 "保存"

配置 Canto 连接

您需要设置生成的 API 密钥中的 "应用 ID" 和 "应用密钥" 以及您使用来访问 Canto 的 URL(因为这些取决于您的设置。)

URL 是使用 "网站" 值附加 api/v1 构建的基 URI,以及用于身份验证的 URI,它使用 "网站" 的顶级域名在 https://oauth.canto.global/oauth/api/oauth2

使用环境变量设置这些值

  • FLOWNATIVE_CANTO_OAUTH_APP_ID
  • FLOWNATIVE_CANTO_OAUTH_APP_SECRET
  • FLOWNATIVE_CANTO_API_BASE_URI
  • FLOWNATIVE_CANTO_OAUTH_BASE_URI

或在 Settings.yaml 中直接设置

Neos:
  Media:
    assetSources:
      'flownative-canto':
        assetSourceOptions:
          appId: '1234567890abcdef'
          appSecret: '1234567890abcdef1234567890abcdef'
          apiBaseUri: 'https://acme.canto.global/api/v1'

Objects.yaml

Flownative\Canto\Service\CantoOAuthClient:
  properties:
    baseUri:
      value: 'https://oauth.canto.global/oauth/api/oauth2'

在 Neos 中使用 Canto 资产源

在媒体模块中,您应该看到两个资产源,一个名为 "Neos",一个名为 "Canto"。如果您切换到 Canto 资产源,并且尚未(或不再)登录到 Canto,您将被重定向到 Canto 登录,并要求您授权 Neos 访问。重定向回 Neos 后,您现在可以浏览/搜索 Canto 并将其中的资产用于 Neos,就像平常一样。

Canto 到 Neos 的自定义字段映射

Canto 提供了 "自定义字段" 以向资产添加任意数据。这些可以映射到 Neos 的资产集合和标签,以便用户可见。

此配置看起来像这样

Flownative:
  Canto:
    mapping:
      # map "Custom Fields" from Canto to Neos
      customFields:
        # Foo Bar Baz                    # the name in Canto, for readbility
        'meta_multichoice_0':            # the custom field id in Canto
          asAssetCollection: false       # map to an asset collection named after the field
          valuesAsTags: false            # map field values to Neos tags; if true
                                         # an asset is assigned a tag corresponding to 
                                         # the value
          include: []                    # only include the listed field values as tags
          exclude: []                    # exclude the listed field values as tags
  • 使用的键是 Canto 中的自定义字段标识符(不是名称!)
  • asAssetCollection 设置为 true 将自定义字段公开为名为自定义字段的资产集合。
  • 如果 valuesAsTags 设置为 true,则自定义字段的每个不同值都作为资产集合中的标签公开,并且资产在 Canto 端分配的值所在的标签下分组。
  • 使用 include 您可以指定要考虑的值,如果使用此功能,则仅公开这些值。
  • 如果只需要排除少量值,可以使用exclude。在Neos中,除了这里列出的值之外,所有值都是公开的。

注意: 目前,如果同时将asAssetCollectionvaluesAsTags设置为true,此功能才有意义。

注意: 资产集合和标签必须手动在Neos端创建(目前如此)。

Canto的变更通知

此包提供了可以用来通知Canto中变化的webhook。

当Canto中的资产被修改时,这些钩子会在Neos端触发所需的更新。

  • 对于元数据更新,只要在Neos中使用元数据,更改就会传递到导入的资产。
  • 如果添加了新版本,这些版本将被导入并替换Neos中现有的资产。

在Canto中启用webhook

  1. 在Canto中转到设置 > 配置选项 > API > Webhooks
  2. 生成一些随机字符串作为“安全令牌”使用
  3. 配置“更新元数据”和“添加新版本”的webhook
    1. 使用以下所示匹配的URL为每个钩子配置
    2. 选择“内容类型”为JSON
    3. 填写“安全令牌”
    4. 点击“添加”

注意: webhook URL必须以Neos实例的公开可访问主机名作为前缀,并且应使用HTTPS来保护安全令牌!

在Neos中配置安全令牌

使用环境变量设置“安全令牌”值

  • FLOWNATIVE_CANTO_WEBHOOK_TOKEN

或在 Settings.yaml 中直接设置

Flownative:
  Canto:
    webhook:
      token: 'some-random-string-of-your-choice'

清理未使用资产

每次在Neos中使用Canto资产时,媒体文件将自动复制到内部Neos资产存储。只要此媒体在网站上某处被使用,Neos就会将该资产标记为正在使用。当资产不再使用时,可以从内部存储中删除二进制数据和相应的元数据。虽然这不是自动发生的,但可以通过像cron-job这样的定期任务轻松自动化。

为了清理未使用的资产,只需按需运行以下命令

./flow media:removeunused --asset-source flownative-canto

如果您希望通过cron-job调用此命令,可以添加两个额外的标志,使此命令非交互式

./flow media:removeunused --quiet --assume-yes --asset-source flownative-canto

致谢和许可

此插件由Paessler赞助,其初始版本由Flownative的Robert Lemke和Karsten Dambekalns开发。

请参阅LICENSE以获取许可详细信息。