PHPackages                             basilicom/multi-domain-bundle - 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. basilicom/multi-domain-bundle

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

basilicom/multi-domain-bundle
=============================

This Bundle provides Multi-Domain features for Pimcore.

85PHPCI failing

Since Nov 25Pushed 5y ago1 watchersCompare

[ Source](https://github.com/basilicom/multi-domain-bundle)[ Packagist](https://packagist.org/packages/basilicom/multi-domain-bundle)[ RSS](/packages/basilicom-multi-domain-bundle/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Basilicom Multi Domain bundle for Pimcore
=========================================

[](#basilicom-multi-domain-bundle-for-pimcore)

Adds functionality to work with multi-dimensional domain specific attributes in Pimcore objects.

On a technical level, it allows an object variant to have *multiple* parents for inheritance. This is achieved by dynamically re-writing the variant inheritance parent lookup by injecting domain specific variant *siblings* instead.

The order of domain selection determines the domain variant precedence.

Furthermore, variants can have domain variants as childs, which are able to *override* already specified field values in regular variants (see demo data below, "Amazon" domain variant for "Size S").

This bundle contains an AdminStyle extension, in order to change the variant icon to a "mind-map" icon and provide special quicktips on hover, too.

Glossary:

- **Domain Variant** - an object variant, where the `domain` field is NOT empty
- **Domain Sibling** - a domain variant next to a regular variant object, providing domain specific value inheritance fallback
- **Domain Child** - an domain variant as child of a regular variant object, *overriding* regular variant values

Hint: If Pimcore debug mode is enabled, a lot of messages are logged!

License
-------

[](#license)

GPLv3 - see: gpl-3.0.txt

Requirements
------------

[](#requirements)

- Pimcore &gt;= 6.0.0

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

[](#installation)

1. Install the bundle using composer `composer require basilicom/multi-domain-bundle dev-master`.
2. Execute `bin/console pimcore:bundle:enable BasilicomMultiDomainBundle`

Configuration
-------------

[](#configuration)

- Add a field named `domain` to the class to enable multi domain capabilities for. This can be any field type, which get() method resolves into a string. Usually, choose a select field.
- Configure the class to use Basilicom\\MultiDomainBundle\\Model\\DataObject as "Parent PHP Class".

Example: [![alt text](docs/class-config.png "Pimcore Class Configuration")](docs/class-config.png)

### Usage

[](#usage)

Use objects and variants (variant hierarchies) as usually. Add variants as childs to an object or a variant and set the `domain` field to some value (not null) in order to configure a domain specific variant.

Get domain specific object value as usually, but select any number of domains beforehand:

```
use Basilicom\MultiDomainBundle\Service\Domain;

$object = \Pimcore\Model\DataObject\AbstractObject::getByPath('/my-object');

// select two domain contexts, first to contain a value override wins!
Domain::select(['Country US', 'Marketplace eBay']);

$fieldValue = $object->getMyFieldName();

// reset selected domain; normal pimcore behaviour:
Domain::clear();
```

If you retrieve an object and you want to know if it is a domain variant, just use: `$myObject->isDomainVariant()`

### Samples

[](#samples)

Given the following object/variant setup:

[![alt text](docs/data-0-tree.png "Object Tree")](docs/data-0-tree.png)

With object and/or variants set up like:

[![alt text](docs/data-1-shoe.png "Object Root")](docs/data-1-shoe.png)

[![alt text](docs/data-2-uk.png "Object UK")](docs/data-2-uk.png)

[![alt text](docs/data-3-us.png "Object US")](docs/data-3-us.png)

[![alt text](docs/data-4-amazon.png "Object Amazon")](docs/data-4-amazon.png)

[![alt text](docs/data-5-ebay.png "Object eBay")](docs/data-5-ebay.png)

[![alt text](docs/data-6-m.png "Object Size M")](docs/data-6-m.png)

[![alt text](docs/data-7-s.png "Object Size S")](docs/data-7-s.png)

[![alt text](docs/data-8-s-amazon.png "Object Size S Amazon Override")](docs/data-8-s-amazon.png)

You get the following data for the various domain selections:

CaseProductDescriptionCategoryPriceNO DOMAINS SELECTEDSize SSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!ShoesNO DOMAINS SELECTEDSize MSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!ShoesMarketplace eBay == eBay categoriesSize SSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Clothing&gt;&gt;Athletic ShoesMarketplace eBay == eBay categoriesSize MSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Clothing&gt;&gt;Athletic ShoesMarketplace Amazon == Amazon categoriesSize SSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Fashion&gt;&gt;ShoesMarketplace Amazon == Amazon categoriesSize MSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Fashion&gt;&gt;ShoesCountry US, "soccer" instead of "football"Size SSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!ShoesCountry US, "soccer" instead of "football"Size MSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!ShoesCountry UK, "trainers" instead of "sneakers"Size STrainers "Marathon"This is the best footwear to wear for a casual game of football with your friends!ShoesCountry UK, "trainers" instead of "sneakers"Size MTrainers "Marathon"This is the best footwear to wear for a casual game of football with your friends!ShoesUS + eBaySize SSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Clothing&gt;&gt;Athletic ShoesUS + eBaySize MSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Clothing&gt;&gt;Athletic ShoeseBay + USSize SSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Clothing&gt;&gt;Athletic ShoeseBay + USSize MSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Clothing&gt;&gt;Athletic ShoesAmazon + US, special child price for Size S and Amazon!Size SSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Fashion&gt;&gt;ShoesAmazon + US, special child price for Size S and Amazon!Size MSneakers "Marathon"This is the best footwear to wear for a casual game of soccer with your friends!Fashion&gt;&gt;ShoesConflict: Amazon + Ebay, 1st wins!Size SSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Fashion&gt;&gt;ShoesConflict: Amazon + Ebay, 1st wins!Size MSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Fashion&gt;&gt;ShoesConflict: Ebay + Amazon, 1st wins!Size SSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Clothing&gt;&gt;Athletic ShoesConflict: Ebay + Amazon, 1st wins!Size MSneakers "Marathon"This is the best footwear to wear for a casual game of football with your friends!Clothing&gt;&gt;Athletic Shoes### Limitations

[](#limitations)

- use at own risk, intensive testing suggested!
- needs more cleanup

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 87.5% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/5c0d06c93d4cfac61be4239ec123ca75a189a5275d4e1782755d85029e67b6bc?d=identicon)[christophluehr](/maintainers/christophluehr)

![](https://www.gravatar.com/avatar/a5082ec20fca835c8a833af5de2647529bad59c9423fbc58cc5625c9fbff230c?d=identicon)[IgorBenko](/maintainers/IgorBenko)

![](https://www.gravatar.com/avatar/afb6145ee5c0c6af7662a537e76ee9c679d30e7e6217636d72576ea5ccd8b002?d=identicon)[AlexanderHeidrich](/maintainers/AlexanderHeidrich)

![](https://www.gravatar.com/avatar/1c8125cb6ac31b6665506656894f95f823ce5a0ff0ee0a48830c968ab42813e4?d=identicon)[kerstinbasilicom](/maintainers/kerstinbasilicom)

![](https://www.gravatar.com/avatar/66044563147e9ced476ac0107e7142f6f97c7362d143800c115401b0eebe102e?d=identicon)[mixahead](/maintainers/mixahead)

---

Top Contributors

[![christophluehr](https://avatars.githubusercontent.com/u/1352356?v=4)](https://github.com/christophluehr "christophluehr (7 commits)")[![AlexanderHeidrich](https://avatars.githubusercontent.com/u/9350895?v=4)](https://github.com/AlexanderHeidrich "AlexanderHeidrich (1 commits)")

### Embed Badge

![Health badge](/badges/basilicom-multi-domain-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/basilicom-multi-domain-bundle/health.svg)](https://phpackages.com/packages/basilicom-multi-domain-bundle)
```

PHPackages © 2026

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