PHPackages                             basilicom/pimcore-advanced-custom-layout-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. [Admin Panels](/categories/admin)
4. /
5. basilicom/pimcore-advanced-custom-layout-bundle

ActivePimcore-bundle[Admin Panels](/categories/admin)

basilicom/pimcore-advanced-custom-layout-bundle
===============================================

Configure and create custom layouts without drag and drop.

v0.4.0(2y ago)02.7kMITPHPPHP &gt;=8.1

Since Apr 3Pushed 2y ago6 watchersCompare

[ Source](https://github.com/basilicom/pimcore-advanced-custom-layout-bundle)[ Packagist](https://packagist.org/packages/basilicom/pimcore-advanced-custom-layout-bundle)[ RSS](/packages/basilicom-pimcore-advanced-custom-layout-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (4)Versions (9)Used By (0)

Advanced Custom Layout Bundle
=============================

[](#advanced-custom-layout-bundle)

Configure and create custom layouts without drag and drop.

Usecase
-------

[](#usecase)

Sometimes you might have to create multiple custom layouts for multiple dataObjects. Additionally, you want to only adapt one field while keeping the rest always the same. The current Pimcore implementation makes it necessary to adapt all custom layouts as soon as you ClassDefinition changes. **Therefor we created this bundle.**

Here you can simply adapt visibility and editability of fields without having to drag and drop them again.

Main features:

- saving a ClassDefinition will also recreate the custom layouts
- decide wether you want to show all fields and adapt only mentioned ones or if you want to only show the mentioned fields
- define roles and workflow states which will automatically apply the custom layout

**Note:** this bundle will create custom layouts but taking the default class's layout definition and adapt the field-attributes. Hidding all fields will still keep layout elements.

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

[](#installation)

```
composer require basilicom/pimcore-advanced-custom-layout-bundle --dev

```

Add a new configuration file `config/packages/custom_layouts.yaml`. An example configuration can be found in `config/packages/example.custom_layouts.yaml`.

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

[](#configuration)

```
advanced_custom_layout:
    Pimcore\Model\DataObject\TestObject:
        # layouts
        custom_layout:
            label: "My custom layout"
            mode: !php/const Basilicom\AdvancedCustomLayoutBundle\Model\CustomLayoutConfig::MODE_EDIT
            auto_apply_roles: []
            auto_apply_workflow_states: []
            fields:
                title:
                    title: "Overwritten Titel"
                    editable: false
                    visible: false
            layoutElements:
                Data Quality:
                    title: "Overwritten Titel"
                    visible: false

```

- `Pimcore\Model\DataObject\TestObject:` is the class name of the object you want to configure the custom layout for.
- `custom_layout` is the identifier of the custom layout. You can define multiple custom layouts for one class.
- `label` is the label of the custom layout which will be displayed in the object edit mode.
- `mode` is the mode of the custom layout. See below for more information.
- `auto_apply_roles` is an array of roles which will automatically apply this custom layout.
- `auto_apply_workflow_states` is an array of workflow states which will automatically apply this custom layout.
- `fields` is an array of fields which will be used for this custom layout.
- `fields.title` is the name of the field.
- `fields.title.title` is the new label of the field which will be displayed in the object edit mode.
- `fields.title.editable` is a boolean value which defines if the field is editable or not.
- `fields.title.visible` is a boolean value which defines if the field is visible or not.
- `layoutElements.Data Quality` will apply on all LayoutElements which have the name `Data Quality`.
- `layoutElements.Data Quality.title` overwrites the visible label of the layout element.
- `layoutElements.Data Quality.visible` determines if the layout element will be visible/added to the custom layout

Custom Layout Modes
-------------------

[](#custom-layout-modes)

### Edit Mode

[](#edit-mode)

A custom layout with this setting will consist of all fields of the layout definition. The provided settings will then overwrite the default settings.

```
advanced_custom_layout:
    Pimcore\Model\DataObject\TestObject:
        # layouts
        custom_layout:
            label: "My custom layout"
            mode: !php/const Basilicom\AdvancedCustomLayoutBundle\Model\CustomLayoutConfig::MODE_EDIT
            fields:
                title:
                    title: "Overwritten Titel"
                    editable: false
                    visible: false

```

In this example we will keep all layout and field definitions but overwrite the title, lock and hide the field.

### Show Mode

[](#show-mode)

A custom layout with this setting will hide all fields which are not defined in the configuration. Additionally, the provided settings will overwrite the default settings regarding being editable or visible.

```
advanced_custom_layout:
    Pimcore\Model\DataObject\TestObject:
        # layouts
        custom_layout:
            label: "My custom layout"
            mode: !php/const Basilicom\AdvancedCustomLayoutBundle\Model\CustomLayoutConfig::MODE_SHOW
            fields:
                title:
                    title: "Overwritten Titel"
                    editable: false

```

In this example we will only show the title attribute which is not editable anymore.

Utilization
-----------

[](#utilization)

### Updating Custom Layouts

[](#updating-custom-layouts)

To update the custom layouts you have to run the following command:

```
bin/console basilicom:custom-layouts:load

```

### For documentation purposes

[](#for-documentation-purposes)

In some cases you might want to generate an overview of all fields settings per layout. In order to do so, you can run the following command:

```
bin/console basilicom:custom-layouts:create-excel

```

The file will be created in `project/var/bundles/AdvancedCustomLayouts/CustomLayouts.xlsx`.

TODOs
-----

[](#todos)

- new mode to extend existing custom layouts, this is usefull if custom layouts are created by the user beforehand
    - allow to set layout reference to create a new custom layout by a reference to easily multiple custom layouts
- ObjectBricks are not supported yet
- add custom logic to also allow custom layouts for field collections
- hide layout elements as soon as all child-fields are hidden

Author
======

[](#author)

Alexander Heidrich

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

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 ~63 days

Recently: every ~87 days

Total

7

Last Release

752d ago

PHP version history (2 changes)v0.1PHP &gt;=8.0

v0.4.0PHP &gt;=8.1

### Community

Maintainers

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

---

Top Contributors

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

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/basilicom-pimcore-advanced-custom-layout-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/basilicom-pimcore-advanced-custom-layout-bundle/health.svg)](https://phpackages.com/packages/basilicom-pimcore-advanced-custom-layout-bundle)
```

###  Alternatives

[roadiz/roadiz

Roadiz is a modern CMS based on a polymorphic content-schema system which can handle many types of services. It’s based on Symfony component and Doctrine ORM for maximum performances and security.

3769.3k6](/packages/roadiz-roadiz)[pimcore/admin-ui-classic-bundle

171.1M46](/packages/pimcore-admin-ui-classic-bundle)[pimcore/studio-backend-bundle

Pimcore Studio Backend Bundle

19112.5k3](/packages/pimcore-studio-backend-bundle)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1714.8k8](/packages/2lenet-crudit-bundle)[rockys/ex-admin-ui

基于Ant Design of Vue 的PHP通用前端渲染框架Ex-admin UI

254.6k4](/packages/rockys-ex-admin-ui)[bedita/manager

BEdita Manager - official admin webapp for BEdita4 API

131.0k](/packages/bedita-manager)

PHPackages © 2026

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