PHPackages                             webexcess/supertypes-plus - 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. webexcess/supertypes-plus

AbandonedArchivedNeos-package[Utility &amp; Helpers](/categories/utility)

webexcess/supertypes-plus
=========================

Modify Mixins for each SuperType-Definition

0.1.1(8y ago)016[1 issues](https://github.com/webexcess/WebExcess.SuperTypesPlus/issues)MITPHP

Since Feb 5Pushed 8y ago1 watchersCompare

[ Source](https://github.com/webexcess/WebExcess.SuperTypesPlus)[ Packagist](https://packagist.org/packages/webexcess/supertypes-plus)[ RSS](/packages/webexcess-supertypes-plus/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

WebExcess.SuperTypesPlus
========================

[](#webexcesssupertypesplus)

[![Latest Stable Version](https://camo.githubusercontent.com/dd75b544b10af24ece7737958d233d1af454c14c5bfb3cf1153c32f66e9e98dd/68747470733a2f2f706f7365722e707567782e6f72672f7765626578636573732f737570657274797065732d706c75732f762f737461626c65)](https://packagist.org/packages/webexcess/supertypes-plus)[![License](https://camo.githubusercontent.com/44ace461ed7b4130d0fae584ae000be424ad0806ab168c41baf6db024e53f8d9/68747470733a2f2f706f7365722e707567782e6f72672f7765626578636573732f737570657274797065732d706c75732f6c6963656e7365)](https://packagist.org/packages/webexcess/supertypes-plus)

The Neos SuperTypes allow you to combine multiple sets of NodeType-Definitions, so called Mixins. That's awesome, until you get overlapping property names.

With this package you become the possibility to modify Mixins for each SuperType-Definition.

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

[](#installation)

```
composer require webexcess/supertypes-plus

```

Example
-------

[](#example)

Mixin Source:

```
'Vendor.Package:ImageMixin':
  abstract: true
  ui:
    inspector:
      groups:
        image:
          label: i18n
          icon: icon-picture
  properties:
    image:
      type: Neos\Media\Domain\Model\ImageInterface
      ui:
        label: i18n
        inspector:
          group: image
          position: 100
    caption:
      type: string
      ui:
        label: i18n
        inspector:
          group: image
          position: 200
```

NodeType Usage:

```
'Vendor.Package:ImageCollage':
  superTypes:
    'Neos.Neos:Content': true
    'Vendor.Package:ImageMixin':
      -
        properties:
          '*': 'left*'
      -
        ui: false
        properties:
          '*': 'right*'
  ui:
    label: i18n
    icon: icon-picture
  properties:
    rightImage:
      ui:
        inspector:
          position: 300
    rightCaption:
      ui:
        inspector:
          position: 400
```

Generated Result:

```
'Vendor.Package:ImageCollage':
  superTypes:
    'Neos.Neos:Content': true
    'Vendor.Package:ImageMixin-9073ec087c07c8365a776639b521c38a6688dbf7': true
    'Vendor.Package:ImageMixin-f6dc591593ef2c992ef29315ad58bf07a2b565a5': true
  ui:
    label: i18n
    icon: icon-picture
  properties:
    rightImage:
      ui:
        inspector:
          position: 300
    rightCaption:
      ui:
        inspector:
          position: 400

# Autogenerated Mixin of the first SuperType-Modification..
'Vendor.Package:ImageMixin-9073ec087c07c8365a776639b521c38a6688dbf7':
  abstract: true
  ui:
    inspector:
      groups:
        image:
          label: 'Vendor.Package:NodeTypes.ImageMixin:groups.image'
          icon: icon-picture
  properties:
    leftImage:
      type: Neos\Media\Domain\Model\ImageInterface
      ui:
        label: 'Vendor.Package:NodeTypes.ImageMixin:properties.image'
        inspector:
          group: image
          position: 100
    leftCaption:
      type: string
      ui:
        label: 'Vendor.Package:NodeTypes.ImageMixin:properties.caption'
        inspector:
          group: image
          position: 200

# Autogenerated Mixin of the second SuperType-Modification..
'Vendor.Package:ImageMixin-f6dc591593ef2c992ef29315ad58bf07a2b565a5':
  abstract: true
  properties:
    rightImage:
      type: Neos\Media\Domain\Model\ImageInterface
      ui:
        label: 'Vendor.Package:NodeTypes.ImageMixin:properties.image'
        inspector:
          group: image
          position: 100
    rightCaption:
      type: string
      ui:
        label: 'Vendor.Package:NodeTypes.ImageMixin:properties.caption'
        inspector:
          group: image
          position: 200
```

Usage
-----

[](#usage)

```
# Original..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:MixinA': true
    'Vendor.Package:MixinB': false

# Disable just a small part..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:MixinA': {ui: false}
    'Vendor.Package:MixinB':
      ui: false

# Give the generated SuperTypes a name..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:Mixin':
      _name: 'Vendor.Package:Mixin-WithoutUI'
      ui: false

# Rename and/or disable some properties..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:Mixin':
      properties:
        'propertyA': 'newPropertyA'
        'propertyB': false

# Rename all properties with a pre and/or suffix..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:Mixin':
      properties:
        '*': 'prefix*Suffix'

# Use one mixin multiple times with renamed properties..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:Mixin':
      -
        properties:
          'property': 'newPropertyA'
      -
        properties:
          'property': 'newPropertyB'

# Use one mixin multiple times with renamed properties and keep the original one..

'Vendor.Package:NodeType':
  superTypes:
    'Vendor.Package:Mixin':
      -
        properties:
          'property': 'newPropertyA'
      -
        '*': true
```

Principles
----------

[](#principles)

- This package allows to generate dynamic Mixins out of existing ones, but with renamed or disabled parts in it
- It only changes values, if it's needed because of a renaming, deletion, repetition or to keep the original i18n translations
- Everything else has to be done at the right place for that.. in the NodeType-Definition itself

ToDo
----

[](#todo)

- Automatic group-renaming in the ui settings and for each corresponding property
- Automatic re-positioning of properties if one mixin is used multiple times
- Tests

---

developed by [webexcess GmbH](https://webexcess.ch/)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~0 days

Total

2

Last Release

3015d ago

### Community

Maintainers

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

---

Top Contributors

[![sbruggmann](https://avatars.githubusercontent.com/u/1162368?v=4)](https://github.com/sbruggmann "sbruggmann (1 commits)")

### Embed Badge

![Health badge](/badges/webexcess-supertypes-plus/health.svg)

```
[![Health](https://phpackages.com/badges/webexcess-supertypes-plus/health.svg)](https://phpackages.com/packages/webexcess-supertypes-plus)
```

###  Alternatives

[sitegeist/silhouettes

Preconfigure property-silhuettes that can be applied to various properties of multiple NodeTypes.

16157.5k](/packages/sitegeist-silhouettes)

PHPackages © 2026

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