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

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

marekskopal/typo3-recipe
========================

Food recipes extension of plugin tx\_news for TYPO3 CMS

v2.1.0(4w ago)033[1 PRs](https://github.com/marekskopal/typo3-recipe/pulls)GPL-2.0-or-laterPHPCI passing

Since Dec 29Pushed 4w ago1 watchersCompare

[ Source](https://github.com/marekskopal/typo3-recipe)[ Packagist](https://packagist.org/packages/marekskopal/typo3-recipe)[ RSS](/packages/marekskopal-typo3-recipe/feed)WikiDiscussions main Synced today

READMEChangelog (3)Dependencies (22)Versions (5)Used By (0)

Recipes for TYPO3 CMS
=====================

[](#recipes-for-typo3-cms)

Adds a **Recipe** record type to `georgringer/news`. A recipe is a news item with the type **Recipe** that carries ingredient sections, instruction sections, nutrition information, and free-text fallback fields. The extension also emits schema.org `Recipe` JSON-LD structured data so search engines can render rich results.

Features
--------

[](#features)

- New **Recipe** record type for `tx_news` — adds the recipe palette to existing news with `type = 3`
- **Ingredient sections** with title, ingredient list, and optional bodytext
- **Instruction sections** with title and ordered instruction steps
- Free-text fallback **ingredient text** and **instruction text** (RTE)
- **Nutrition info** — yield, calories, proteins, carbs, fats, fiber
- Automatic **JSON-LD** (`Recipe` schema.org structured data) via a Fluid ViewHelper — emits `HowToStep` for single-section recipes and `HowToSection` for multi-section recipes
- Drop-in **Recipe Detail partial** that renders every recipe field
- Configurable **author** for the JSON-LD payload via the TYPO3 extension configuration
- Multilingual labels (EN, CS out of the box)
- TYPO3 13 and 14 compatible

Examples
--------

[](#examples)

- [www.mlsnej.cz](https://www.mlsnej.cz)

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

[](#requirements)

- PHP 8.3+
- TYPO3 13.4 or 14.3+
- `georgringer/news` ^14.0

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

[](#installation)

```
composer require marekskopal/typo3-recipe
```

After installation, run the database analyser in the TYPO3 Install Tool to create the required tables.

Setup
-----

[](#setup)

Include the TypoScript Set **Recipe** in your site package or via the site configuration sets. The Set wires the Recipe domain model as a `tx_news` subclass and exposes the partial path under `plugin.tx_news.view.partialRootPaths`.

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

[](#backend-setup)

Create or edit a news record on a page where the **News** content element is placed. Switch the **Type** to **Recipe** and fill in the recipe palette:

- **Ingredient sections** — inline children with title, ingredient list, and optional bodytext
- **Ingredient text** — RTE fallback shown after ingredient sections
- **Instruction sections** — inline children with title and ordered instructions
- **Instruction text** — RTE fallback shown after instruction sections
- **Yield** — e.g. `4 servings` (used as `recipeYield`)
- **Calories / Proteins / Carbs / Fats / Fiber** — nutrition values (integers; calories drive the JSON-LD `NutritionInformation` block)

Rendering the recipe
--------------------

[](#rendering-the-recipe)

The extension ships `Resources/Private/Partials/Recipe/Detail.html` and registers its path on `plugin.tx_news.view.partialRootPaths`. Render it from your `tx_news` Detail template:

```

```

The partial renders ingredient sections, instruction sections, nutrition table, optional RTE fallbacks, and emits the JSON-LD block using the ViewHelper below.

JSON-LD ViewHelper
------------------

[](#json-ld-viewhelper)

The Fluid ViewHelper `` outputs a `` block with schema.org `Recipe` structured data. Register the namespace at the top of a template:

```

```

The structured data includes `name`, `image`, `author`, `datePublished`, `description`, `keywords`, `recipeYield`, `nutrition`, `recipeIngredient`, and `recipeInstructions` (using `HowToStep` for a single instruction section, or `HowToSection` when multiple sections exist).

Author Configuration
--------------------

[](#author-configuration)

Configure the `author` block of the JSON-LD payload in the extension configuration (Admin Tools → Settings → Extension Configuration → `ms_recipe`):

KeyDescription`authorName`Author name. Empty value omits the `author` field from the JSON-LD output.`authorUrl`Optional author URL — written as `author.url` when set.Customization
-------------

[](#customization)

### Templates

[](#templates)

Override the bundled partial by adding your own path with a higher index:

```
plugin.tx_news.view.partialRootPaths.500 = EXT:your_extension/Resources/Private/Partials/

```

Then provide a `Recipe/Detail.html` in that directory.

### Styling

[](#styling)

The bundled partial renders semantic markup (`` for ingredients, `` for instructions) without bundled CSS. Style the `.recipe`, `.recipe-ingredients`, `.recipe-instructions`, and `.recipe-nutrition` wrappers from your own site CSS.

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

42

↑

FairBetter than 88% of packages

Maintenance94

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community7

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

Total

3

Last Release

29d ago

Major Versions

1.0.0 → v2.0.02026-01-27

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/33967656?v=4)[Marek Skopal](/maintainers/marekskopal)[@marekskopal](https://github.com/marekskopal)

---

Top Contributors

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

---

Tags

typo3typo3-extensiontypo3recipes

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[georgringer/news

News system - Versatile news system based on Extbase &amp; Fluid and using the latest technologies provided by TYPO3 CMS.

2985.3M123](/packages/georgringer-news)[typo3/cms-install

TYPO3 CMS Install Tool - The Install Tool is used for installation, upgrade, system administration and setup tasks.

1812.3M494](/packages/typo3-cms-install)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.1M8](/packages/netresearch-rte-ckeditor-image)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40529.5k](/packages/wazum-sluggi)

PHPackages © 2026

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