terminal42 / contao-dam-integrator
为 Contao 开源 CMS 添加对不同资产管理提供商的支持
Requires
- php: ^8.1
- ext-mbstring: *
- contao/core-bundle: ^5.3
- doctrine/dbal: ^3.0
- scriptfusion/byte-formatter: ^4.1
- symfony/http-client: ^6.4
Requires (Dev)
- contao/manager-plugin: ^2.0
- terminal42/contao-build-tools: dev-main
README
此包将不同的资产管理解决方案直接集成到 Contao 中。它通过在常规文件选择标签旁边添加新标签页来实现,您可以在其中选择配置的资产管理提供商的资产。您可以搜索和筛选资产,然后从文件树小部件中下载并选择它们。
目前支持两种集成
- Bynder (https://www.bynder.com)
- Celum (https://www.celum.com) 通过 brix:anura Celum 扩展 (https://www.brix.ch/de/extensions/brixanura)
如果我仍然需要将所有文件下载到系统中,我还需要这个吗?
这种方法仍然有一个很大的优势,即您可以在一个中心位置管理您的文件,并在多个内容管理系统或多个 Contao 设置中使用它。
安装
- 安装包
$ composer require terminal42/contao-dam-integrator
- 配置包
编辑您的 config.yml
文件并添加必要的配置参数。每个 DAM 提供商都有不同的选项,请确保根据您的需要选择。当然,您可以启用多个 DAM 提供商,并允许用户使用多个。同时,请确保在后台设置中启用 DAM 集成!
一些设置在不同的提供商之间是相同的,只是其中的值可能不同。常见的设置在此描述
metadata.mapper
:集成允许您以最适合您的方式导入元数据。由于所有 DAM 提供商都支持配置自定义属性,因此可以使用 Twig 模板字符串导入您喜欢的属性。这也允许您组合多个字段或使用 Twig 函数进行高级用例。请注意,因为我们处于 Symfony 配置中,如果您正在使用{% if ... %}
语句,则需要转义%
以确保 Symfony 不会寻找参数。所以请写成{%% if ... %%}
。metadata.cronjob.expression
:默认情况下,cronjob 已禁用,但如果您想定期更新资产的元数据,则可以在此配置表达式。例如,如果您想每周一更新所有文件的元数据,可以使用例如metadata: cronjob: expression: '42 5 * * 1'
请注意,如果没有配置metadata.mapper
,cronjob 不会做任何事情。资产是通过 Contao 内置的 Symfony Messenger 集成进行队列的,因此更新将在后台发生。为了加快速度并提高可靠性,建议您配置后台工作者(或 Contao 的 Cronjob 框架,它将为您完成此操作)。
Bynder
首先,配置您的 Bynder 账户。创建一个永久令牌并将其配置为 token
。为了不下载过大的(在大小和像素上),在 Bynder 中配置一个“衍生品”并将其名称用作 derivative_name
。
terminal42_contao_dam_integrator: bynder: domain: 'foobar.getbynder.com' # You can get the permanent token as described on https://support.bynder.com/hc/en-us/articles/360013875300-Permanent-Tokens token: '2a7a5243548…32739e624dc' # The target dir the bundle downloads assets to. Make sure it is RELATIVE to your specified contao.upload_path (In that case it would be default store the images in "files/bynder_assets") target_dir: 'bynder_assets' derivative_name: Contao metadata: mapper: de: title: '{{ name }}' alt: "{{ tags|join(', ') }}" caption: '© {{ property_copyright }}. {{ property_lizenzart }}' cronjob: expression: '42 5 * * 1'
使用 metadata.mapper
,您可以配置从 Bynder 导入元数据到 Contao 元数据小部件的方式。Bynder 集成自动转换您的自定义媒体属性并基于语言获取正确的值。它还将检查媒体属性是否配置为允许多个或单个值。因此,您不必担心将只有一个值的数组转换为字符串。模板期望有效的 Twig 字符串,因此您也可以
Celum
首先,配置您的Celum账户。请确保已安装brix:anura扩展。此捆绑包依赖于其API。为了防止下载巨大的文件(在大小和像素方面),在Celum中配置“下载格式”,并使用其ID作为download_format_id
。
terminal42_contao_dam_integrator: celum: base_uri: 'https://dam.example.com/anura/' token: 'nTLf…kosEtr90qVk' # The target dir the bundle downloads assets to. Make sure it is RELATIVE to your specified contao.upload_path (In that case it would be default store the images in "files/celum_assets") target_dir: 'celum_assets' download_format_id: 42 metadata: mapper: de: title: '{{ name }}' alt: "{{ info_371|default('') }}" # Info field ID 371 is "Description" in our case caption: '{%% if info_373 ?? false %%}© {{ info_373 }} {%% endif %%}' # Note the escaping of "%" if you work with if statements cronjob: expression: '42 5 * * 1'
使用metadata.mapper
,您可以配置从Celum导入到Contao元数据小部件的方式。所有来自general
的资产详细信息以及所有信息字段值都可用。
从terminal42/contao-bynder
升级
此捆绑包是terminal42/contao-bynder
的后继产品。与其他捆绑包不同,此捆绑包提供了比Bynder更多的DAM提供商的集成。为了使从terminal42/contao-bynder
迁移到terminal42/contao-dam-integrator
变得容易,此捆绑包包含自动迁移功能。
- 在运行迁移之前,请确保已升级到
terminal42/contao-bynder
的版本2。 - 卸载
terminal42/contao-bynder
- 不要运行数据库迁移。 - 安装
terminal42/contao-dam-integrator
- 不要运行数据库迁移。 - 将您的
config.yaml
从旧格式迁移到新格式。配置密钥几乎相同- 从
terminal42_contao_bynder
迁移到terminal42_contao_dam_integrator.bynder
。 - 将
metaDataMapper
移动到metadata.mapper
。 - 从驼峰命名法转换为蛇形命名法(例如,
derivativeName
->derivative_name
)。 - 已删除对
derivativeOptions
的支持,因此不再支持“即时”衍生物。配置一个永久性衍生物,并使用derivative_name
来使用它。
- 从
- 运行
contao:migrate
(或使用Contao Manager来运行数据库迁移) - 在用户组中启用集成。默认情况下,所有集成现在都隐藏给非管理员用户。