PHPackages                             belsignum/booster - 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. [Search &amp; Filtering](/categories/search)
4. /
5. belsignum/booster

ActiveTypo3-cms-extension[Search &amp; Filtering](/categories/search)

belsignum/booster
=================

Schema.org structured data for Typo3 and Google APIs

12.3.0(1mo ago)01GPL-2.0-or-laterPHP

Since Jul 11Pushed 1mo agoCompare

[ Source](https://github.com/Andreas-Sommer/booster)[ Packagist](https://packagist.org/packages/belsignum/booster)[ RSS](/packages/belsignum-booster/feed)WikiDiscussions master Synced today

READMEChangelog (5)Dependencies (4)Versions (12)Used By (0)

Booster Extension
=================

[](#booster-extension)

Schema.org Structured Data extension for TYPO3.

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

[](#requirements)

- TYPO3 `^12.4`
- PHP version compatible with your TYPO3 v12 setup
- PHP extension `ext-json`
- Composer package `brotkrueml/schema` (`^3.13.0`)

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

[](#installation)

Install the extension via Composer and activate it in TYPO3.

```
composer require belsignum/booster
vendor/bin/typo3 database:updateschema
vendor/bin/typo3 cache:flush
```

For this project setup, `belsignum/booster` is loaded from `packages/booster`.

Scope
-----

[](#scope)

The extension provides page-related Structured Data handling for:

- FAQ (`FAQPage`)
- Product (`Product`)
- Custom JSON-LD (free-form, per page)
- FAQ accordion plugin (`plugin.tx_booster_faq`)

It also includes frontend JSON-LD rendering via `PreProcessHook`.

Editor (Backend)
----------------

[](#editor-backend)

### Creating Structured Data:

[](#creating-structured-data)

- Open the target page and go to `Page Properties` -&gt; `Structured Data`.
- Maintain FAQ entries in `tx_booster_faqs`.
- Maintain Product entry in `tx_booster_product`.
- Maintain free-form JSON-LD in `tx_booster_custom_jsonld` (see below).
- Use the `Google Rich Results Test` button to validate the current page in Google's external tool (new browser tab).
- For localized pages, use TYPO3 localization/synchronization actions in the same tab.

### Custom JSON-LD

[](#custom-json-ld)

The `Custom JSON-LD` field accepts a single JSON-LD object or an array of objects. It is rendered as a `t3editor` instance with JSON syntax highlighting.

To register **multiple** entities at once, wrap them in square brackets and separate them with commas:

```
[
  { "@context": "https://schema.org", "@type": "Organization", "name": "Example" },
  { "@context": "https://schema.org", "@type": "WebSite", "url": "https://example.com" }
]
```

Each top-level entity in the array will be emitted as its own `` tag in the page head, which is the form Google recommends.

Validation on save (DataHandler hook `CustomJsonLdValidator`):

- Empty value is accepted.
- Invalid JSON is rejected; the previous value is restored and an error FlashMessage is shown.
- Valid JSON is canonicalized to a pretty-printed (unminified) representation before being stored, so the field stays readable in the backend.
- A soft warning FlashMessage is emitted if any top-level entity is missing `@context` or `@type`. The value is still saved.

Frontend rendering (`PreProcessHook::emitCustomJsonLd`):

- Reads the stored field for the current (language-resolved) page UID.
- Splits a top-level JSON array into one `` tag per entity (Google recommends separate tags per entity).
- Emits minified JSON via `json_encode($entity, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_HEX_TAG)`. `JSON_HEX_TAG` neutralizes any `` inside string values, so a stray `` substring in user content cannot break out of the surrounding tag.
- Suppressed when the page has `no_index > 0`, identical to the existing FAQ/Product output.
- Bypasses `brotkrueml/schema`'s `SchemaManager` (which only supports typed schema models) and writes directly via `PageRenderer::addHeaderData`.

### Google Rich Results validator button

[](#google-rich-results-validator-button)

The button is rendered by the custom FormEngine node `boosterRichResultsLink` (registered in `ext_localconf.php`). It builds the frontend URL via `\TYPO3\CMS\Backend\Routing\PreviewUriBuilder` with the current `sys_language_uid`, URL-encodes it, and links to `https://search.google.com/test/rich-results?url=` in a new tab.

For new (unsaved) pages or pages without a resolvable preview URL, the button is replaced with a hint asking the editor to save first. The validator only accepts publicly reachable URLs.

### FAQ Accordion Plugin

[](#faq-accordion-plugin)

- Add a content element via `Plugins -> FAQ Accordions from Structured Data`.
- The plugin renders the FAQ list attached to the current page.
- FAQ ordering follows the MM sorting (`tx_booster_pages_content_mm`).

Localization import bug with l10nmgr (from 12.2 fixed by default)
-----------------------------------------------------------------

[](#localization-import-bug-with-l10nmgr-from-122-fixed-by-default)

The localization relation issue is fixed from Booster version `12.2` onward:

- Correct `l18n_parent` table mapping for `tx_booster_domain_model_content`.
- Localization-aware TCA setup for page fields:
    - `tx_booster_faqs`
    - `tx_booster_product`
- Support for language synchronization/localization of inline children.

For existing installations with legacy data, run the repair command once.

CLI Repair Command (Legacy Data)
--------------------------------

[](#cli-repair-command-legacy-data)

To repair existing localized relations created before the fix:

```
vendor/bin/typo3 booster:structured-data:repair-localization --dry-run
```

Run actual repair:

```
vendor/bin/typo3 booster:structured-data:repair-localization
```

Optional filters:

```
vendor/bin/typo3 booster:structured-data:repair-localization --dry-run --page=3662
vendor/bin/typo3 booster:structured-data:repair-localization --dry-run --language=9
```

###  Health Score

39

—

LowBetter than 85% of packages

Maintenance85

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

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

Recently: every ~26 days

Total

10

Last Release

42d ago

Major Versions

v9.x-dev → 10.0.12023-03-08

10.1.1 → 12.1.02026-02-04

v10.x-dev → 12.2.02026-03-03

### Community

Maintainers

![](https://www.gravatar.com/avatar/03d3db83203d6cf93e3b12cb86a8bd2dafe17669d605933d352c34eb607bea0e?d=identicon)[belsignum](/maintainers/belsignum)

---

Top Contributors

[![Andreas-Sommer](https://avatars.githubusercontent.com/u/30976558?v=4)](https://github.com/Andreas-Sommer "Andreas-Sommer (40 commits)")

---

Tags

searchgoogleJSON-LDseoTYPO3 CMSstructured-dataschema.orgTYPO3 extensiophpn

### Embed Badge

![Health badge](/badges/belsignum-booster/health.svg)

```
[![Health](https://phpackages.com/badges/belsignum-booster/health.svg)](https://phpackages.com/packages/belsignum-booster)
```

###  Alternatives

[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

34653.7k16](/packages/brotkrueml-schema)[apache-solr-for-typo3/solr

Apache Solr for TYPO3 - Apache Solr for TYPO3 is the enterprise search server you were looking for with special features such as Faceted Search or Synonym Support and incredibly fast response times of results within milliseconds.

1493.2M47](/packages/apache-solr-for-typo3-solr)[tpwd/ke_search

Faceted search - Search Extension for TYPO3, including faceting search functions.

15926.5k18](/packages/tpwd-ke-search)[dmk/mksearch

Generic highly adjustable and extendable search engine framework, using Zend Lucene, Apache Solr or ElasticSearch. But support for other search engines can be provided easily.

1331.5k](/packages/dmk-mksearch)[lochmueller/index

Smart and flexible async indexing of pages and documents for search engines, AI providers, and other external systems.

111.3k3](/packages/lochmueller-index)[lochmueller/seal

SEAL Search - Flexible integration of the Search Engine Abstraction Layer project

101.0k2](/packages/lochmueller-seal)

PHPackages © 2026

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