PHPackages                             kevinappelt/content-defender - 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. kevinappelt/content-defender

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

kevinappelt/content-defender
============================

Define allowed or denied content element types in your backend layouts

0319PHP

Since Feb 20Pushed 3y agoCompare

[ Source](https://github.com/kevin-appelt/content_defender)[ Packagist](https://packagist.org/packages/kevinappelt/content-defender)[ RSS](/packages/kevinappelt-content-defender/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

TYPO3 Extension content\_defender
=================================

[](#typo3-extension-content_defender)

[![Latest Stable Version](https://camo.githubusercontent.com/54bdd17254600da5a6997230fe1d0b1965e8a45b09d6332096032e8f551bfaa3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69636868616272656368742f636f6e74656e742d646566656e6465722e737667)](https://packagist.org/packages/ichhabrecht/content-defender)[![Build Status](https://camo.githubusercontent.com/b62d3fdad9d363ef606a860ed52bc1d77d40b5576ae3d416b9d6b949f2e5f47c/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f49636848616252656368742f636f6e74656e745f646566656e6465722f6d61696e2e737667)](https://travis-ci.org/IchHabRecht/content_defender)[![StyleCI](https://camo.githubusercontent.com/35d755fc760573ac5bbdff6ced0d92bda132e4a1339338001180e95938b8cbba/68747470733a2f2f7374796c6563692e696f2f7265706f732f39303534353134332f736869656c643f6272616e63683d6d61696e)](https://styleci.io/repos/90545143)

Define allowed or denied content element types in your backend layouts

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

[](#installation)

Simply install the extension with Composer or the Extension Manager.

Usage
-----

[](#usage)

1. You only need to adjust the column configuration of your backend\_layout

**Restrict certain content element fields**

- To allow a limited set of values for content element fields use `allowed.field = [list of comma separated values]`

*Examples:*

```
columns {
    1 {
        name = Column with header and textmedia elements
        colPos = 3
        colspan = 6
        allowed {
            CType = header, textmedia
        }
    }
}

```

```
columns {
    1 {
        name = Column with News plugin only
        colPos = 3
        colspan = 6
        allowed {
            CType = list
            list_type = news_pi1
        }
    }
}

```

**Combine multiple content element fields**

- The example allows multiple content element types (text and list) while restricting plugin types to `news` only.

*Example:*

```
columns {
    1 {
        name = A column with restricted list_type and "normal" CType
        colPos = 3
        colspan = 6
        allowed {
            CType = textmedia, list
            list_type = news_pi1
        }
    }
}

```

**Deny certain content element types**

- To remove a set of values from content element fields use `disallowed.field = [list of comma separated values]`

*Examples:*

```
columns {
    1 {
        name = Column without divider, plain html and table elements
        colPos = 3
        colspan = 6
        disallowed {
            CType = div, html, table
        }
    }
}

```

```
columns {
    1 {
        name = Column with header and list, without News plugin
        colPos = 3
        colspan = 6
        allowed {
            CType = header, list
        }
        disallowed {
            list_type = news_pi1
        }
    }
}

```

**Limit the number of content elements**

- To restrict the number of content elements use `maxitems = [number of elements]`

*Example:*

```
columns {
    1 {
        name = Column with one textmedia
        colPos = 3
        colspan = 6
        allowed {
            CType = textmedia
        }
        maxitems = 1
    }
}

```

Community
---------

[](#community)

- Thanks to [b13](https://b13.com) that sponsored the maintenance of this extension with a sponsorship
- Thanks to [Wolfgang Wagner](https://wwagner.net) who sponsored the maintenance of this extension with a sponsorship
- Thanks to [WACON Internet GmbH](https://www.wacon.de) that sponsored the maintenance of this extension with a [GitHub sponsorship](https://github.com/sponsors/IchHabRecht)
- Thanks to [Daniel Goerz](https://twitter.com/ervaude) who wrote about content\_defender in his blog [useTYPO3](https://usetypo3.com/backend-layouts.html)
- Thanks to [Marcus Schwemer](https://twitter.com/MarcusSchwemer) who wrote about content\_defender in his blog [TYPO3worx](https://typo3worx.eu/2017/07/typo3-extension-roundup-q1-q2-2017/)

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity22

Early-stage or recently created project

 Bus Factor1

Top contributor holds 90.8% 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/fad751f4fb0262df7ed180b5e73fe5d14de0020466f2f20f8c6f32d15f487591?d=identicon)[kevin-appelt](/maintainers/kevin-appelt)

---

Top Contributors

[![IchHabRecht](https://avatars.githubusercontent.com/u/1453345?v=4)](https://github.com/IchHabRecht "IchHabRecht (248 commits)")[![kevin-appelt](https://avatars.githubusercontent.com/u/25666167?v=4)](https://github.com/kevin-appelt "kevin-appelt (15 commits)")[![revoltek-daniel](https://avatars.githubusercontent.com/u/5931272?v=4)](https://github.com/revoltek-daniel "revoltek-daniel (3 commits)")[![mbrodala](https://avatars.githubusercontent.com/u/5037116?v=4)](https://github.com/mbrodala "mbrodala (2 commits)")[![josefglatz](https://avatars.githubusercontent.com/u/2861556?v=4)](https://github.com/josefglatz "josefglatz (1 commits)")[![jdreesen](https://avatars.githubusercontent.com/u/424602?v=4)](https://github.com/jdreesen "jdreesen (1 commits)")[![koehnlein](https://avatars.githubusercontent.com/u/16088567?v=4)](https://github.com/koehnlein "koehnlein (1 commits)")[![mschwemer](https://avatars.githubusercontent.com/u/103594?v=4)](https://github.com/mschwemer "mschwemer (1 commits)")[![goldi42](https://avatars.githubusercontent.com/u/113867?v=4)](https://github.com/goldi42 "goldi42 (1 commits)")

### Embed Badge

![Health badge](/badges/kevinappelt-content-defender/health.svg)

```
[![Health](https://phpackages.com/badges/kevinappelt-content-defender/health.svg)](https://phpackages.com/packages/kevinappelt-content-defender)
```

PHPackages © 2026

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