PHPackages                             marekskopal/typo3-features - 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. marekskopal/typo3-features

ActiveTypo3-cms-extension

marekskopal/typo3-features
==========================

Features plugin for TYPO3 CMS

v1.0.0(1mo ago)08↑275%GPL-2.0-or-laterPHPPHP &gt;=8.3CI passing

Since Apr 7Pushed 3d agoCompare

[ Source](https://github.com/marekskopal/typo3-features)[ Packagist](https://packagist.org/packages/marekskopal/typo3-features)[ Docs](https://marekskopal.cz)[ RSS](/packages/marekskopal-typo3-features/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (13)Versions (2)Used By (0)

TYPO3 Features Extension (ms\_features)
=======================================

[](#typo3-features-extension-ms_features)

A TYPO3 CMS extension for managing and displaying features in a responsive card-based grid layout.

Features
--------

[](#features)

- **Feature management** — title, subtitle, perex (plain text), description (rich text), multiple images
- **Topped features** — mark features as topped to highlight them visually and sort them first
- **Flexible ordering** — by sorting + topped (default), sorting only, UID, or alphabetically
- **Filtering** — show all features or only topped ones
- **Responsive grid** — CSS grid layout adapting from 1 to 3+ columns
- **Template layouts** — support for custom template overrides via TypoScript or PHP globals
- **Multilingual** — English, German, and Czech translations included
- **No JavaScript** — pure CSS layout, no JS dependencies

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

[](#requirements)

- PHP 8.3+
- TYPO3 13.4+ or 14.1+

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

[](#installation)

### Composer

[](#composer)

```
composer require marekskopal/typo3-features
```

### Setup

[](#setup)

1. Install the extension
2. Include the static TypoScript template "Features" in your site
3. Create Feature records on your storage page
4. Add the "Features" content element to your page

Backend Setup
-------------

[](#backend-setup)

Create **Feature** records on the page where the content element is placed:

- **Title** — feature title (required)
- **Subtitle** — optional subtitle
- **Perex** — optional short description (plain text)
- **Description** — full description with rich text editor
- **Images** — one or more images; the first image is used as the main image in the card layout
- **Topped** — mark the feature as topped for visual highlighting and priority sorting

Drag and drop features to set their display order. Then add the **Features** content element to the same page.

Content Element Options (FlexForm)
----------------------------------

[](#content-element-options-flexform)

OptionValuesDefault**Ordering**Topped + sorting, Sorting, UID, AlphabeticallyTopped + sorting**Filter**Show all, Only toppedShow all**Template layout**Custom layouts via TypoScript/PHP—Template Layouts
----------------

[](#template-layouts)

Register custom template layouts in Page TSconfig:

```
tx_msfeatures.templateLayouts {
    my_layout = My custom layout
}

```

Or in PHP (e.g. `ext_localconf.php`):

```
$GLOBALS['TYPO3_CONF_VARS']['EXT']['ms_features']['templateLayouts'][] = ['My layout label', 'my_layout'];
```

Then configure the corresponding template paths in TypoScript:

```
plugin.tx_msfeatures_feature.settings.templateLayouts {
    my_layout {
        templateRootPath = EXT:your_extension/Resources/Private/Templates/MsFeatures/MyLayout/
        partialRootPath  = EXT:your_extension/Resources/Private/Partials/MsFeatures/MyLayout/
        layoutRootPath   = EXT:your_extension/Resources/Private/Layouts/MsFeatures/MyLayout/
    }
}

```

Customization
-------------

[](#customization)

### Templates

[](#templates)

Override templates by setting custom paths in TypoScript constants:

```
plugin.tx_msfeatures_feature.view {
    templateRootPath = EXT:your_extension/Resources/Private/Templates/MsFeatures/
    partialRootPath = EXT:your_extension/Resources/Private/Partials/MsFeatures/
    layoutRootPath = EXT:your_extension/Resources/Private/Layouts/MsFeatures/
}

```

### Styling

[](#styling)

The extension includes minimal CSS. Key classes:

ClassElement`.msfeatures-wrapper`Outer wrapper (max-width 1200px)`.msfeatures__list`CSS grid container`.msfeatures__item`Single feature card`.msfeatures__item--topped`Topped feature card (highlighted border)`.msfeatures__image`Image container`.msfeatures__title`Feature title`.msfeatures__subtitle`Feature subtitle`.msfeatures__perex`Perex text`.msfeatures__description`RTE descriptionFeature Model
-------------

[](#feature-model)

FieldTypeDescription`title`stringFeature title (required)`subtitle`stringFeature subtitle`perex`textShort description (plain text)`description`RTEFull description (rich text)`images`FALMultiple images; `getMainImage()` returns the first`top`booleanTopped flag for highlighting and priority sortingLicense
-------

[](#license)

GPL-2.0-or-later

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance97

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

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

Unknown

Total

1

Last Release

33d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2eeb4a0e8bc7e2ce26f00193dac3973909911a18079b18956b03af66b901421a?d=identicon)[marekskopal](/maintainers/marekskopal)

---

Top Contributors

[![marekskopal](https://avatars.githubusercontent.com/u/33967656?v=4)](https://github.com/marekskopal "marekskopal (5 commits)")

---

Tags

typo3features

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/marekskopal-typo3-features/health.svg)

```
[![Health](https://phpackages.com/badges/marekskopal-typo3-features/health.svg)](https://phpackages.com/packages/marekskopal-typo3-features)
```

###  Alternatives

[typo3/testing-framework

The TYPO3 testing framework provides base classes for unit, functional and acceptance testing.

675.0M775](/packages/typo3-testing-framework)[fluidtypo3/vhs

This is a collection of ViewHelpers for performing rendering tasks that are not natively provided by TYPO3's Fluid templating engine.

1954.1M48](/packages/fluidtypo3-vhs)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)[aimeos/aimeos-typo3

Professional, full-featured and high performance TYPO3 e-commerce extension for online shops and complex B2B projects

1.5k91.2k4](/packages/aimeos-aimeos-typo3)[leuchtfeuer/secure-downloads

"Secure Download": Apply TYPO3 access rights to ALL file assets (PDFs, TGZs or JPGs etc. - configurable) - protect them from direct access.

22234.7k1](/packages/leuchtfeuer-secure-downloads)[eliashaeussler/typo3-warming

Warming - Warms up Frontend caches based on an XML sitemap. Cache warmup can be triggered via TYPO3 backend or using a console command. Supports multiple languages and custom crawler implementations.

20229.9k](/packages/eliashaeussler-typo3-warming)

PHPackages © 2026

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