PHPackages                             alengo/sulu-content-extra-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. alengo/sulu-content-extra-bundle

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

alengo/sulu-content-extra-bundle
================================

Additional Data tab for Sulu CMS Pages and Articles — generic JSON field with configurable key mapping

1.4.0(1mo ago)061↓88.7%MITPHPPHP ^8.2

Since Apr 6Pushed 1mo agoCompare

[ Source](https://github.com/alengodev/SuluContentExtraBundle)[ Packagist](https://packagist.org/packages/alengo/sulu-content-extra-bundle)[ Docs](https://github.com/alengodev/SuluContentExtraBundle)[ RSS](/packages/alengo-sulu-content-extra-bundle/feed)WikiDiscussions main Synced yesterday

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

SuluContentExtraBundle
======================

[](#sulucontentextrabundle)

Extends [Sulu CMS](https://sulu.io/) 3.x Pages and Articles with configurable additional data and navigation link markers.

Features
--------

[](#features)

- **Additional Data tab** — auto-registered for Pages and Articles via `PreviewFormViewBuilder`
- **Built-in entities** — concrete `Page`, `PageDimensionContent`, `Article`, `ArticleDimensionContent` extending Sulu's base classes; no project entities required
- **Configurable field mapping** — declare which form fields go to the unlocalized vs. localized dimension content via bundle config
- **Zero-config entity registration** — `sulu_page` / `sulu_article` objects are auto-configured via `PrependExtensionInterface`
- **Navigation link markers** — `NavigationLinkEnhancer` adds `sourceLink`/`sourceUuid` markers to link-type pages; `NavigationLinkTypeResolver` exposes them to templates
- **Sortable template groups** — `SortedGroupProvider` decorates `sulu_admin.metadata_group_provider` and orders form groups (Article admin tabs, SmartContent Type filter, ...) by the appearance order of their `sulu_admin.template_group.*` keys in `translations/admin+intl-icu.{locale}.yaml`

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

[](#requirements)

- PHP 8.2+
- Sulu CMS ^3.0.6 (Doctrine/Gedmo compatibility fixes for mapped-superclass entities are bundled with Sulu since 3.0.6 — see [sulu/sulu#8743](https://github.com/sulu/sulu/pull/8743))
- Symfony 7.x

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

[](#installation)

```
composer require alengo/sulu-content-extra-bundle
```

Register the bundle in `config/bundles.php`:

```
Alengo\SuluContentExtraBundle\AlengoContentExtraBundle::class => ['all' => true],
```

That's it — no further configuration required for a standard setup.

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

[](#configuration)

Create `config/packages/alengo_content_extra.yaml` to declare which form fields are stored in the unlocalized vs. localized dimension content:

```
alengo_content_extra:
    page:
        form_key: page_additional_data        # default
        unlocalized_keys:
            - template_theme
            - template_logo_light
        localized_keys:
            - notes
    article:
        form_key: article_additional_data     # default
        unlocalized_keys:
            - template_theme
        localized_keys:
            - notes
```

To use additional data only for Articles (not Pages):

```
alengo_content_extra:
    page:
        enabled: false
```

To disable the Article tab entirely:

```
alengo_content_extra:
    article:
        enabled: false
```

### Full configuration reference

[](#full-configuration-reference)

```
alengo_content_extra:
    page:
        enabled: true
        page_class: Alengo\SuluContentExtraBundle\Entity\Page           # override with custom entity
        entity_class: Alengo\SuluContentExtraBundle\Entity\PageDimensionContent
        form_key: page_additional_data
        tab_title: sulu_admin.app.additional_data
        unlocalized_keys: []
        localized_keys: []
    article:
        enabled: true
        article_class: Alengo\SuluContentExtraBundle\Entity\Article
        entity_class: Alengo\SuluContentExtraBundle\Entity\ArticleDimensionContent
        form_key: article_additional_data
        tab_title: sulu_admin.app.additional_data
        unlocalized_keys: []
        localized_keys: []
```

Provided Forms
--------------

[](#provided-forms)

The bundle does **not** ship default form XML files — the project controls field definitions. Create your own in `config/forms/`:

```
config/forms/page_additional_data.xml
config/forms/article_additional_data.xml

```

Example form:

```

    page_additional_data

                Theme
                Theme

```

Provided Models
---------------

[](#provided-models)

ClassPurpose`Entity\Page`Concrete Doctrine entity (`pa_pages`) extending Sulu's `Page``Entity\PageDimensionContent`Dimension content with `additionalData` JSON column (`pa_page_dimension_contents`)`Entity\Article`Concrete Doctrine entity (`ar_articles`) extending Sulu's `Article``Entity\ArticleDimensionContent`Dimension content with `additionalData` JSON column (`ar_article_dimension_contents`)`Model\AdditionalDataInterface`Interface implemented by both dimension content entitiesNavigation Link Markers
-----------------------

[](#navigation-link-markers)

`NavigationLinkEnhancer` decorates Sulu's `sulu_page.page_link_dimension_content_enhancer`. When a page is of link type, it adds two markers to the template data:

FieldTypeDescription`sourceLink``bool``true` when the page redirects to another page or URL`sourceUuid``string`UUID of the original link-type page`NavigationLinkTypeResolver` exposes these fields to templates via the `navlink` content section — bypassing Sulu's `TemplateResolver` which would otherwise drop unknown keys.

Both services are registered automatically.

`auto_generate_proxy_classes: false` in production
--------------------------------------------------

[](#auto_generate_proxy_classes-false-in-production)

The bundle registers Doctrine's `resolve_target_entities` for all enabled entity overrides. This replaces Sulu's original class references in association mappings at container build time, so Doctrine never needs to generate proxies for the original Sulu classes at runtime.

This allows setting `auto_generate_proxy_classes: false` in production (recommended):

```
# config/packages/prod/doctrine.yaml
when@prod:
    doctrine:
        orm:
            auto_generate_proxy_classes: false
            proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
```

Proxies are generated during `cache:warmup` as part of the normal deploy process.

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance91

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

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

Total

8

Last Release

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4a3bea97975bdeddcfa5b76c222740e703e4ff5f9bbf5f6d5d75e8827e0a48ac?d=identicon)[alengodev](/maintainers/alengodev)

---

Top Contributors

[![hual7](https://avatars.githubusercontent.com/u/89628357?v=4)](https://github.com/hual7 "hual7 (19 commits)")

### Embed Badge

![Health badge](/badges/alengo-sulu-content-extra-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/alengo-sulu-content-extra-bundle/health.svg)](https://phpackages.com/packages/alengo-sulu-content-extra-bundle)
```

###  Alternatives

[sulu/skeleton

Project template for starting your new project based on the Sulu content management system

29735.5k](/packages/sulu-skeleton)[sulu/form-bundle

Bundle for creating forms in Sulu.

88306.7k8](/packages/sulu-form-bundle)[sulu/theme-bundle

The Sulu Bundle which provides theming functionality.

23307.1k1](/packages/sulu-theme-bundle)[sulu/redirect-bundle

Sulu bundle for managing redirects

22249.1k](/packages/sulu-redirect-bundle)[sulu/automation-bundle

The Sulu Bundle which provides automation functionality

18302.2k11](/packages/sulu-automation-bundle)[sulu/headless-bundle

Bundle that provides controllers and services for using Sulu as headless content management system

56146.1k2](/packages/sulu-headless-bundle)

PHPackages © 2026

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