PHPackages                             terminal42/contao-dam-integrator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. terminal42/contao-dam-integrator

ActiveContao-bundle[Utility &amp; Helpers](/categories/utility)

terminal42/contao-dam-integrator
================================

Adds support for Asset Management of different providers to Contao Open Source CMS

1.3.3(2mo ago)02.6kMITPHPPHP ^8.1

Since Aug 27Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/terminal42/contao-dam-integrator)[ Packagist](https://packagist.org/packages/terminal42/contao-dam-integrator)[ RSS](/packages/terminal42-contao-dam-integrator/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (9)Dependencies (50)Versions (23)Used By (0)

terminal42/contao-dam-integrator
================================

[](#terminal42contao-dam-integrator)

This bundle integrates different Asset Management solutions directly in to Contao. It works by adding new tabs next to the regular file picker tabs where you can choose your assets of your configured Asset Management providers. You can search and filter your assets, download and then select them right from the file tree widget.

Currently, there are two integrations supported:

- Bynder ()
- Celum () via the brix:anura Celum extension ()

Why would I need this, if it still downloads all the files to the system?
-------------------------------------------------------------------------

[](#why-would-i-need-this-if-it-still-downloads-all-the-files-to-the-system)

This approach still has one big advantage which is that you can manage your files in one central location and use it across multiple content management systems or even multiple Contao setups.

Installation
------------

[](#installation)

1. Install the bundle

```
$ composer require terminal42/contao-dam-integrator

```

2. Configure the bundle

Edit your `config.yml` file and add the necessary configuration parameters. Each DAM provider has different options, so make sure to pick yours accordingly. Of course, you can enable more than just one DAM provider and give your users the option to work with multiple. Also ensure to enable the DAM integrations in the user group settings in the back end!

Some of the settings are identical amongst the different providers, just the values inside might differ. The common settings are described here:

- `metadata.mapper`: The integrations allow you to import metadata in a way that is perfect to you. As all DAM providers support configuring custom properties, importing the ones you like is done using a Twig template string. That also allows you to combine multiple fields or use Twig functions for advanced use cases. Note that because we are within the Symfony config, if you are using `{% if ... %}` statements, you need to escape the `%` in order to make sure Symfony is not looking for parameters. So write `{%% if ... %%}` instead. Locale keys normally match **exactly** (e.g. `de` only applies to the `de` locale). If you want a mapping to apply to a language and all of its regional variants, you can suffix the locale with `+`. For example, `de+` will match `de`, `de_CH`, `de_DE`, etc.

    ```
    metadata:
        mapper:
            de+:
                title: '{{ name }}'
                alt: "{{ tags|join(', ') }}"
    ```

    Exact locale mappings still take precedence over the `+` variant. So `de_CH` would override `de+` if both are defined.
- `metadata.cronjob.expression`: By default, cronjobs are disabled but if you want to have this extension to regularly update the metadata of your assets, you may configure the expression here. For example, if you wanted to update the metadata of all files every Monday, use e.g.:

    ```
     metadata:
        cronjob:
           expression: '42 5 * * 1'
    ```

    Note that the cronjob will not do anything if there is no `metadata.mapper` configured. The assets are queued using Contao's built-in Symfony Messenger integration so updating will happen in the background. To speed things up and make it more reliable it is recommended that you configure background workers (or Contao's Cronjob Framework which will do that for you).

### Bynder

[](#bynder)

First, configure your Bynder account. Create a permanent token and configure this as `token`. In order to not download huge (both in size and in pixels), configure a "Derivative" in Bynder and use its name as `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'
```

With the `metadata.mapper` you can configure the way you want to import metadata from Bynder to Contao's metadata widget. The Bynder integration automatically converts your custom media properties and fetches the correct values based on the language for it. It will also check if the media property is configured to allow multiple or only single values. So you don't have to worry about converting arrays with only one value into a string. The templates expect a valid Twig string so you can also

### Celum

[](#celum)

First, configure your Celum account. Make sure that you have the brix:anura extension installed. This bundle relies on its API. In order to not download huge (both in size and in pixels), configure a "Download Format" in Celum and use its ID as `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'
```

With the `metadata.mapper` you can configure the way you want to import metadata from Celum to Contao's metadata widget. All the asset details from `general` as well as all the info field values are available.

Upgrade from `terminal42/contao-bynder`
---------------------------------------

[](#upgrade-from-terminal42contao-bynder)

This bundle is the successor of `terminal42/contao-bynder`. Contrary to the other bundle, this bundle provides integrations with more DAM providers than just Bynder. To make the migration from `terminal42/contao-bynder` to `terminal42/contao-dam-integrator` easy, this bundle ships with an automated migration:

1. Make sure you have updated to version 2 of `terminal42/contao-bynder` before you run the migration.
2. Uninstall `terminal42/contao-bynder` - do **not** run database migrations.
3. Install `terminal42/contao-dam-integrator` - do **not** run database migrations.
4. Migrate your `config.yaml` from the old format, to the new format. The config keys are almost the same:
    1. Migrate from `terminal42_contao_bynder` to `terminal42_contao_dam_integrator.bynder`.
    2. Move the `metaDataMapper` to `metadata.mapper`.
    3. Convert from camel case to snake case (e.g. `derivativeName` -&gt; `derivative_name`).
    4. Support for `derivativeOptions` has been dropped so "on the fly" derivatives are not supported anymore. Configure a permanent derivative instead and use this using `derivative_name`.
5. Run `contao:migrate` (or use the Contao Manager to run database migrations)
6. Enable the integrations in the user groups. By default, all integrations are now hidden to non-admin users.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance87

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 79.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~8 days

Total

20

Last Release

66d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/481937?v=4)[Yanick Witschi](/maintainers/Toflar)[@Toflar](https://github.com/Toflar)

---

Top Contributors

[![Toflar](https://avatars.githubusercontent.com/u/481937?v=4)](https://github.com/Toflar "Toflar (19 commits)")[![qzminski](https://avatars.githubusercontent.com/u/193483?v=4)](https://github.com/qzminski "qzminski (5 commits)")

---

Tags

managementassetDAMbyndercelum

### Embed Badge

![Health badge](/badges/terminal42-contao-dam-integrator/health.svg)

```
[![Health](https://phpackages.com/badges/terminal42-contao-dam-integrator/health.svg)](https://phpackages.com/packages/terminal42-contao-dam-integrator)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M519](/packages/shopware-core)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M376](/packages/easycorp-easyadmin-bundle)[contao/core-bundle

Contao Open Source CMS

1231.6M2.7k](/packages/contao-core-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.8M712](/packages/sylius-sylius)[oro/platform

Business Application Platform (BAP)

642140.7k104](/packages/oro-platform)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
