PHPackages                             pixxio/pixxio-extension - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. pixxio/pixxio-extension

ActiveTypo3-cms-extension[File &amp; Storage](/categories/file-storage)

pixxio/pixxio-extension
=======================

Integrate pixx.io DAM Digital Asset Management into TYPO3. Use files from your pixx.io media pool with TYPO3 easily and without any detour. Use the search field to search through your pixx.io media library and find the right picture in a flash.

4.0.0(3w ago)417.4k↓55.1%8[3 issues](https://github.com/pixx-io/typo3/issues)[1 PRs](https://github.com/pixx-io/typo3/pulls)GPL-2.0-or-laterPHPCI passing

Since Apr 13Pushed 2w ago1 watchersCompare

[ Source](https://github.com/pixx-io/typo3)[ Packagist](https://packagist.org/packages/pixxio/pixxio-extension)[ RSS](/packages/pixxio-pixxio-extension/feed)WikiDiscussions main Synced 3d ago

READMEChangelog (4)Dependencies (14)Versions (96)Used By (0)

pixx.io TYPO3 Extension
=======================

[](#pixxio-typo3-extension)

[![Tests](https://github.com/pixx-io/typo3/actions/workflows/tests.yml/badge.svg)](https://github.com/pixx-io/typo3/actions/workflows/tests.yml)[![codecov](https://camo.githubusercontent.com/2ba0f50f70cb3b349a9d2a5390b48aa0003c44ceb2444573404a6575c756307e/68747470733a2f2f636f6465636f762e696f2f67682f706978782d696f2f7479706f332f6272616e63682f6d61696e2f67726170682f62616467652e737667)](https://codecov.io/gh/pixx-io/typo3)

The pixx.io Typo3 Extension allows pixx.io users to select the assets directly from their mediaspace.

Key Features:
-------------

[](#key-features)

- Select your assets from you pixx.io Mediaspace
- Sync your assets and metadata from pixx.io Mediaspace
- Multi-Site Support: Configure separate credentials and file storages per TYPO3 site (TYPO3 v13)
- Full TYPO3 FAL Support: Works with any FAL storage adapter (local filesystem, AWS S3, Azure, Google Cloud, etc.)
- Includes Proxy support
- Works with the popular core extension: typo3/filemetadata

⚠️ Note on versions
-------------------

[](#️-note-on-versions)

This extension has several main versions, which are intended for different TYPO3 versions:

Extension versionCompatible with TYPO3BranchChangelog4.xTYPO3 v14[`v14`](https://github.com/pixx-io/typo3/tree/v14)[Changelog 4.x](https://github.com/pixx-io/typo3/blob/v14/CHANGELOG.md)3.xTYPO3 v13[`main`](https://github.com/pixx-io/typo3)[Changelog 3.x](https://github.com/pixx-io/typo3/blob/main/CHANGELOG.md)2.xTYPO3 v11 - v12.[`v12`](https://github.com/pixx-io/typo3/tree/v12)[Changelog 2.x](https://github.com/pixx-io/typo3/blob/v12/CHANGELOG.md)Please use the appropriate version depending on your TYPO3 installation.

Installation:
-------------

[](#installation)

The installation of the extension is straight forward. Type `composer req pixxio/pixxio-extension` for installation. ext-curl is installed automatically, if not already installed. After the successful installation go to Maintenance -&gt; Analyze Database and apply the changes that are related to the pixxio\_extension.

If there are problems with curl on your server and the files are not transferred, you can make sure that `allow_url_fopen = On`is set in your php.ini. With that configuration curl is not used but `file_get_contents`.

Configuration:
--------------

[](#configuration)

To get the extension complete experience, you have to do some settings first. Go to Settings &gt; Extension configuration and select pixxio\_extension.

### Multi-Site Configuration (TYPO3 v13)

[](#multi-site-configuration-typo3-v13)

The extension supports site-specific configuration for multi-site installations. This allows you to:

- Use different pixx.io credentials (mediaspaces/users) per TYPO3 site
- Store files from different sites in separate storages
- Isolate file access using TYPO3's native file permissions

**Site-specific settings** (configured per site in TYPO3 Backend):

- `pixxio.url` - Mediaspace URL
- `pixxio.token_refresh` - API refresh token
- `pixxio.auto_login` - Auto-login in image picker
- `pixxio.filestorage_id` - Storage UID for file separation
- `pixxio.subfolder` - Subfolder within storage

All other settings (sync behavior, metadata mapping, proxy) are configured globally in Extension Configuration.

**📖 Detailed Documentation:** See [docs/SITE\_SPECIFIC\_STORAGE.md](./docs/SITE_SPECIFIC_STORAGE.md) for complete setup instructions, examples, and best practices.

**Example site configuration** (`config/sites//settings.yaml`):

```
pixxio:
  url: "https://portal-a.pixx.io"
  token_refresh: "your-refresh-token"
  filestorage_id: 2
  subfolder: "pixxio"
  auto_login: true
```

If no site-specific value is set, the global extension configuration is used as fallback.

---

### Global Extension Configuration

[](#global-extension-configuration)

You have four configuration categories: Basic, Metadata, Sync and Proxy:

### Basic

[](#basic)

For Sync Actions it is necessary to set the URL of your mediaspace and refresh token (The refresh token is accessible in pixx.io under the Settings -&gt; User -&gt; Edit a User and go to App Connections).

**Note:** For multi-site installations, configure these values per site instead of globally (see Multi-Site Configuration above).

The File Storage ID is an optional setting. You can choose a Storage ID, where you would like to upload and store the pixx.io assets. You can also define a subfolder if you wish.

**Storage Adapters:** The extension uses TYPO3's File Abstraction Layer (FAL) API and supports any configured storage adapter:

- Local filesystem (default)
- AWS S3
- Azure Blob Storage
- Google Cloud Storage
- Or any other FAL-compatible storage driver

Simply configure your desired storage in TYPO3's File &gt; Filelist module and reference its UID in the extension configuration.

In the `allowed_download_formats` setting you can configure in which format the images are allowed to be imported. With the `original` format, the original file will be imported without conversion. With the `preview` format, images are downscaled to Full HD size and imported as JPEG or PNG. With the formats `jpg`, `png`, `pdf` and `tiff`, images are converted to the respective format if possible.

### Metadata

[](#metadata)

It's possible to sync the alt text. Therefore you have to define the name of the metadata, which you would like to synchronize.

### Sync

[](#sync)

See [docs/sync.md](./docs/sync.md) for detailed information about the sync process.

In Sync you can define behaviors that should be done during a running sync. **Note:** At least one of the following options must be enabled for the sync to run.

**Delete:**If a file is deleted in pixx.io, it will also be deleted in TYPO3 when this flag is set. If this flag is disabled, files that no longer exist in pixx.io will be kept in TYPO3 (a warning will be logged).

**Update:**If you use the version feature of pixx.io, you can automatically update files to their new main version. When this flag is set, the sync will replace files that aren't the main version with their new main version.

**Update Metadata:**When this flag is set, the sync will update metadata (title, description, alt text, keywords, etc.) from pixx.io to TYPO3 for all synchronized files. This allows you to keep metadata in sync without updating file versions.

**Limit:**You can define a limit from 1 to 500. This limit defines the amount of files that should be checked through a single sync run.

### Proxy Settings:

[](#proxy-settings)

You be able to run the pixx.io connection via a proxy. Therefore you have to set in the extension configuration under the tab "Proxy" the flag “use\_proxy” and add a valid connection string to the “proxy\_connection”. The proxy URL can have this schema http(s)://username:password@host:port . It’s not necessary to add a username or a password, but you should add the host and port for the connection.

### Hide select button

[](#hide-select-button)

You can hide the "Select from pixx.io" button for backend users and backend user groups. Do do so, just add a user setting:

`setup.override.show_pixxioUpload=0`

Works with
----------

[](#works-with)

### filemetadata

[](#filemetadata)

If you are using the core extension `filemetadata` we will sync more metadata from pixx.io to TYPO3. The mapping of the metadata is defined like this:

**Important for GPS sync:** In your mediaspace metadata settings, the internal field `Location (internal)` (`Ort des Motives (Intern)`) must be added/activated as an important metadata field.

#### Mapping from pixx.io to TYPO3

[](#mapping-from-pixxio-to-typo3)

- `Title` / `Titel` (Type: Internal) =&gt; `Download Name`
- `Description` / `Beschreibung` (Type: Internal) =&gt; `Description` and `Caption`
- `Rating` / `Bewertung` (Type: Internal) =&gt; `Ranking `
- `Keywords` / `Schlagwörter` =&gt; `Keywords`
- `Creator` / `Ersteller` (Type: Internal) =&gt; `Creator`
- `Model` / `Model` (Type: EXIF) =&gt; `Creator Tool`
- `Publisher` / `Publisher` (Type: IPTC) =&gt; `Publisher`
- `Source` / `Quelle` (Type: IPTC) =&gt; `Source`
- `Copyright Notice` / `Copyright-Vermerk` (Type: IPTC) =&gt; `Copyright`
- `Location` / `Ort des Motives` (Type: Internal) =&gt; `GPS Latitude` und `GPS Longitude`
- `Country` (Type: Custom) =&gt; `Country`
- `Region` (Type: Custom) =&gt; `Region`
- `City` / `Stadt` (Type: IPTC) =&gt; `City`
- `Date created` / `Erstellungsdatum` (Type: Internal) =&gt; `Content Creation Date`
- `Zuletzt bearbeitet` (Type: Internal) =&gt; `Content Modification Date`
- `ModifyDate` / `Farbraum` (Type: Internal) =&gt; `Color Space`

Documentation
-------------

[](#documentation)

- **[Site-Specific Storage Configuration](./docs/SITE_SPECIFIC_STORAGE.md)** - Complete guide for multi-site installations with separate file storages and credentials
- **[Sync Process](./docs/sync.md)** - Detailed information about the synchronization process

Development
-----------

[](#development)

### Code Quality &amp; Testing

[](#code-quality--testing)

This extension includes several tools to ensure code quality:

```
# Install dependencies
composer install

# Run PHP Syntax Check (using parallel-lint)
composer lint:php

# Run PHPStan Static Analysis
composer analyze:phpstan

# Run PHPUnit tests
composer test:unit
# or directly:
.Build/bin/phpunit

# Run complete CI pipeline (Lint + PHPStan + Tests)
composer ci

# Run tests with coverage
.Build/bin/phpunit --coverage-text
.Build/bin/phpunit --coverage-html coverage/
```

### PHPStan Configuration

[](#phpstan-configuration)

The project uses PHPStan Level 6 for static code analysis to catch potential bugs and type errors before runtime.

Level 6 enforces:

- Type hints for all parameters and return types
- Proper array type specifications (e.g., `array`)
- Generic type declarations for classes extending generic base classes
- Strict type checks including detection of always-true/false conditions

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance80

Actively maintained with recent releases

Popularity34

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 52.6% 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 ~44 days

Recently: every ~3 days

Total

35

Last Release

26d ago

Major Versions

2.4.3 → 3.4.32026-04-28

2.4.4 → 3.5.02026-05-27

3.5.0 → v12.x-dev2026-05-28

3.6.0 → 4.0.02026-06-08

4.0.0 → v14.x-dev2026-06-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/4ce0820d226435bc16b8c1a0eabd448e6a1435322ecd6b9dd974ad9181f026a0?d=identicon)[pixx.io](/maintainers/pixx.io)

![](https://www.gravatar.com/avatar/21de1826a0ac676eb30931b9f5600da7af00d12a350cba1ee95b990b375a54ce?d=identicon)[oliver\_pixxio](/maintainers/oliver_pixxio)

---

Top Contributors

[![ow-pixxio](https://avatars.githubusercontent.com/u/289944820?v=4)](https://github.com/ow-pixxio "ow-pixxio (102 commits)")[![rogervanwile](https://avatars.githubusercontent.com/u/11217061?v=4)](https://github.com/rogervanwile "rogervanwile (35 commits)")[![machwert](https://avatars.githubusercontent.com/u/10484883?v=4)](https://github.com/machwert "machwert (26 commits)")[![dannystey](https://avatars.githubusercontent.com/u/4408826?v=4)](https://github.com/dannystey "dannystey (20 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (8 commits)")[![lmpixx](https://avatars.githubusercontent.com/u/274776501?v=4)](https://github.com/lmpixx "lmpixx (2 commits)")[![misterboe](https://avatars.githubusercontent.com/u/6050140?v=4)](https://github.com/misterboe "misterboe (1 commits)")

---

Tags

extensiontypo3Pixxio

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/pixxio-pixxio-extension/health.svg)

```
[![Health](https://phpackages.com/badges/pixxio-pixxio-extension/health.svg)](https://phpackages.com/packages/pixxio-pixxio-extension)
```

###  Alternatives

[ichhabrecht/filefill

Find and fetch missing local files from different remotes

691.5M1](/packages/ichhabrecht-filefill)[hmmh/solr-file-indexer

Solr file indexer for Typo3

15239.8k3](/packages/hmmh-solr-file-indexer)

PHPackages © 2026

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