flownative / neos-canto
Canto 的 Neos 集成
Requires
- php: ^8.0
- ext-json: *
- behat/transliterator: ~1.0
- flownative/oauth2-client: ^4.0.2
- guzzlehttp/guzzle: ^6.5.8 || ^7.4.5
- neos/flow: 7.0 || ^8.0 || ^9.0 || dev-main
- neos/media: ^7.0 || ^8.0 || ^9.0 || dev-main
This package is auto-updated.
Last update: 2024-09-14 10:51:35 UTC
README
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 访问
- 在 Canto 中转到设置 > 配置选项 > API > API 密钥
- 点击 "创建 API 密钥"
- 填写一个有助于您理解该密钥用途的名称
- 填写 "重定向 URL",使用
https://<www.your-site.com>/flownative-canto/authorization/finish
,使用您自己的域名(!) - 记下新密钥的 "应用 ID"、"应用密钥" 和 "网站"
允许 API 密钥的客户端凭证模式
要能够从命令行使用 Canto 连接或使用下面描述的 webhook 功能,必须启用客户端凭证模式。
- 在 Canto 中转到设置 > 配置选项 > API > API 密钥
- 编辑用于 Neos 集成的 API 密钥
- 启用 "支持客户端凭证模式" 并点击 "保存"
配置 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中,除了这里列出的值之外,所有值都是公开的。
注意: 目前,如果同时将asAssetCollection
和valuesAsTags
设置为true
,此功能才有意义。
注意: 资产集合和标签必须手动在Neos端创建(目前如此)。
Canto的变更通知
此包提供了可以用来通知Canto中变化的webhook。
当Canto中的资产被修改时,这些钩子会在Neos端触发所需的更新。
- 对于元数据更新,只要在Neos中使用元数据,更改就会传递到导入的资产。
- 如果添加了新版本,这些版本将被导入并替换Neos中现有的资产。
在Canto中启用webhook
- 在Canto中转到设置 > 配置选项 > API > Webhooks
- 生成一些随机字符串作为“安全令牌”使用
- 配置“更新元数据”和“添加新版本”的webhook
- 使用以下所示匹配的URL为每个钩子配置
- 选择“内容类型”为JSON
- 填写“安全令牌”
- 点击“添加”
注意: 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以获取许可详细信息。