PHPackages                             gedankenfolger/gedankenfolger-faq - 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. gedankenfolger/gedankenfolger-faq

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

gedankenfolger/gedankenfolger-faq
=================================

TYPO3 14 FAQ extension with Content Blocks, Site Set, Schema, JS, SCSS.

14.3.0(1mo ago)010GPL-2.0-or-laterPHP

Since Dec 15Pushed 1mo agoCompare

[ Source](https://github.com/gf-ntiedt/gedankenfolger-faq)[ Packagist](https://packagist.org/packages/gedankenfolger/gedankenfolger-faq)[ RSS](/packages/gedankenfolger-gedankenfolger-faq/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (10)Dependencies (6)Versions (46)Used By (0)

TYPO3 Extension Gedankenfolger FAQ
(gedankenfolger-faq)
=======================================================

[](#typo3-extension-gedankenfolger-faqgedankenfolger-faq)

 Compact FAQ extension using Content Blocks (Record Types + Content Elements), Site Set, SCSS, and vanilla JS. Requires TYPO3 14.

 First of all many thanks to the hole TYPO3 community, all supporters of TYPO3. Especially to [TYPO3-Team](https://typo3.org/) and [Gedankenfolger GmbH](https://www.gedankenfolger.de/).

> **TYPO3 13 support** is maintained on the [`13.x`](../../tree/13.x) branch.

###  Contents of this file

[](#----contents-of-this-file)

1. [Features](#features)
2. [Install](#install)
3. [Usage](#usage)
4. [Options](#options)
5. [Settings / Constants](#settings)
6. [Template Overrides](#template-overrides)
7. [CLI Commands](#cli-commands)
8. [Playwright Tests](#testing)
9. [Changelog](#changelog)
10. [Acknowledgements](#acknowledgements)
11. [Notes](#notes)
12. [Notice on Logo / Trademark Use](#noticetrademark)

---

###  Features:

[](#----features)

1. FAQ Item record type (question, answer (RTE), categories, color variant)
2. FAQ content element: select items from a storage folder; options for open-first, single-open-only, and grouping by category with optional category headings
3. Accessible accordion markup and deep-linking via configurable URL parameter
4. schema.org FAQPage structured data output via brotkrueml/schema
5. SCSS (BEM) and no jQuery
6. Template and partial overrides from your site package without forking the extension

###  Install

[](#----install)

#### 1. Require via Composer

[](#1-require-via-composer)

```
composer require gedankenfolger/gedankenfolger-faq
```

Activate the extension in the TYPO3 backend (Extensions module) if not done automatically.

#### 2a. Include TypoScript via Site Set (recommended)

[](#2a-include-typoscript-via-site-set-recommended)

Add the set to your site configuration:

```
# config/sites/my-site/config.yaml
sets:
  - gedankenfolger/gedankenfolger-faq
```

#### 2b. Include TypoScript via Classic Static Template

[](#2b-include-typoscript-via-classic-static-template)

For installations without Site Sets, include the static template in your TypoScript template record:

`Web > Template > Edit > Includes > Include Static (from extensions)` → **Gedankenfolger FAQ**

#### 3. SCSS compilation

[](#3-scss-compilation)

`ws_scss` is bundled as a dependency and compiles `Resources/Public/Scss/faq.scss` automatically. To use the pre-compiled CSS instead, set `faq.scss.default = 0` and `faq.css.default = 1`.

###  Usage

[](#----usage)

1. Create FAQ items under the record type "FAQ Item".
2. Insert the "FAQ" content element, point it to a storage folder with your FAQ items via "Storage folder".
3. Configure behaviour and style via site settings (SiteSet) or the TypoScript constant editor (Classic).

###  Options

[](#----options)

- **Open first**: opens the first FAQ initially if none is open yet.
- **Open single only**: ensures only one FAQ can be open at a time (per component instance).
- **Group by category**: groups items by their assigned sys\_category.
- **Show category titles**: when grouping is enabled, renders category headings above each group.

#### Behavior and accessibility

[](#behavior-and-accessibility)

- Markup uses native ``/`` for accessible accordion behavior.
- Deep-linking via hash (`#faq-{uid}`) opens the targeted item and, when single-open-only is enabled, closes siblings within the same component.
- JavaScript is lightweight and instance-scoped via data attributes on the wrapper: `data-open-first`, `data-open-single-only`, and `data-faq-parameter`.

###  Settings / Constants

[](#----settings--constants)

All settings can be configured via Site Set settings (recommended) or the TypoScript constant editor.

ConstantDefaultDescription`faq.parameterName``faq`URL parameter name used for deep-linking`faq.schemaEnabled``1`Output schema.org FAQPage markup`faq.partialRootPath`*(empty)*Override path for partials (see below)`faq.css.default``1`Load pre-compiled default CSS`faq.scss.default``1`Load and compile default SCSS via ws\_scss`faq.color.default``#ffffff`Default text color`faq.bgcolor.default``#2f3b4a`Default background color`faq.color.primary``#000000`Primary text color`faq.bgcolor.primary``#005bbb`Primary background color`faq.color.secondary``#000000`Secondary text color`faq.bgcolor.secondary``#6c757d`Secondary background color`faq.color.tertiary``#000000`Tertiary text color`faq.bgcolor.tertiary``#b35f00`Tertiary background color`faq.font.family`system-ui, …Font family###  Template Overrides

[](#----template-overrides)

Templates and partials can be overridden from your site package without modifying the extension. Only the files you actually want to change need to be created — all others fall back to the extension defaults.

### Template override

[](#template-override)

Set `file =` directly in your sitepackage TypoScript to replace the main template:

```
tt_content.gedankenfolger_faq {
    file = EXT:my_sitepackage/Resources/Private/Extensions/GedankenfolgerFaq/frontend.html
}

```

**Available template:**

- `frontend.html` – main content element template

### Partial overrides

[](#partial-overrides)

Set `faq.partialRootPath` to a directory in your sitepackage. Only the partials you place there will be used; all others fall back to the extension defaults.

**Via Site Set** (`config/sites/my-site/config.yaml`):

```
settings:
  faq.partialRootPath: 'EXT:my_sitepackage/Resources/Private/Extensions/GedankenfolgerFaq/Partials/'
```

**Via TypoScript constant editor:**

```
faq.partialRootPath = EXT:my_sitepackage/Resources/Private/Extensions/GedankenfolgerFaq/Partials/

```

**Available partials:**

- `Frontend/Layout0/Faqs.html`
- `Frontend/Layout0/FaqsByCategories.html`
- `Frontend/Layout100/Faqs.html` *(Bootstrap accordion)*
- `Frontend/Layout100/FaqsByCategories.html` *(Bootstrap accordion)*
- `Frontend/Schema.html`

###  CLI Commands

[](#----cli-commands)

 This extension provides two TYPO3 CLI commands for setting up and inspecting Playwright test pages. Both commands are intended for development and testing environments only.

#### `gedankenfolger-faq:setup-test-pages`

[](#gedankenfolger-faqsetup-test-pages)

Creates a hidden page tree with one test page per content element option variant, plus a SysFolder with FAQ items and categories. UIDs are stored in `sys_registry` for later retrieval.

```
ddev typo3 gedankenfolger-faq:setup-test-pages
```

Options:

OptionDescription`--pid=`Parent page UID. Auto-detected from the first site configuration if omitted.`--site=`Site identifier to use for root page detection (e.g. `main`). Only relevant if multiple sites exist.`--reset`Delete existing test pages before creating new ones. Required if the page tree already exists.If test pages already exist without `--reset`, the command exits with a notice and does nothing.

#### `gedankenfolger-faq:test-pages`

[](#gedankenfolger-faqtest-pages)

Reads the stored UIDs from `sys_registry` and outputs them as JSON. Primarily used by `playwright.config.ts` to resolve page UIDs at test runtime.

```
ddev typo3 gedankenfolger-faq:test-pages
```

Example output:

```
{
    "rootUid": 42,
    "folderUid": 43,
    "variants": {
        "default": 44,
        "open-first": 45,
        "open-single-only": 46,
        "grouped": 47,
        "grouped-titles": 48
    }
}
```

Returns `{}` with exit code 1 if no test data is found. Run `setup-test-pages` first.

###  Playwright Tests

[](#----playwright-tests)

 End-to-end tests for all content element option variants are included in `tests/playwright/faq.spec.ts`. They require a running TYPO3 installation with this extension installed and active.

#### 1. Install Playwright

[](#1-install-playwright)

In your TYPO3 project root (requires Node.js):

```
npm install --save-dev @playwright/test @types/node
npx playwright install chromium
```

#### 2. Create test pages

[](#2-create-test-pages)

```
ddev typo3 gedankenfolger-faq:setup-test-pages
```

#### 3. Run tests

[](#3-run-tests)

```
npx playwright test --config packages/gedankenfolger_faq/playwright.config.ts
```

#### Adapt to your environment

[](#adapt-to-your-environment)

The config uses two environment variables that default to the ddev development environment:

VariableDefaultDescription`TYPO3_BASE_URL``https://typo314.ddev.site`Frontend URL of your TYPO3 installation`TYPO3_CLI``ddev typo3`Command to invoke the TYPO3 CLIOverride them for non-ddev setups:

```
TYPO3_BASE_URL=https://my-site.local TYPO3_CLI="php vendor/bin/typo3" \
  npx playwright test --config packages/gedankenfolger_faq/playwright.config.ts
```

#### Reset test pages

[](#reset-test-pages)

```
ddev typo3 gedankenfolger-faq:setup-test-pages --reset
```

###  Changelog

[](#----changelog)

 See [CHANGELOG.md](CHANGELOG.md) — generated with [git-cliff](https://git-cliff.org) from Conventional Commits.

###  Acknowledgements

[](#----acknowledgements)

 This extension builds on the following open source projects:

- [TYPO3 Content Blocks](https://github.com/FriendsOfTYPO3/content-blocks)
- [Schema.org for TYPO3](https://github.com/brotkrueml/schema)
- [SASS Compiler for TYPO3](https://github.com/WapplerSystems/ws_scss)

###  Notes

[](#----notes)

#### ⚠️ Required sitepackage configuration

[](#️-required-sitepackage-configuration)

##### Disable e-mail spam protection

[](#disable-e-mail-spam-protection)

The sitepackage must set `config.spamProtectEmailAddresses = 0`.
Without this setting, e-mail links in the FAQ schema (JSON-LD) appear as obfuscated `href="#"` and are worthless for search engines.
This setting affects the entire site.

###  Notice on Logo / Trademark Use

[](#----notice-on-logo--trademark-use)

The logo used in this extension is protected by copyright and, where applicable, trademark law and remains the exclusive property of Gedankenfolger GmbH.

Use of the logo is only permitted in the form provided here. Any changes, modifications, or adaptations of the logo, as well as its use in other projects, applications, or contexts, require the prior written consent of Gedankenfolger GmbH.

In forks, derivatives, or further developments of this extension, the logo may only be used if explicit consent has been granted by Gedankenfolger GmbH. Otherwise, the logo must be removed or replaced with an own, non-protected logo.

All other logos and icons bundled with this extension are either subject to the TYPO3 licensing terms (The MIT License (MIT), see ) or are in the public domain.

For full license terms covering all graphic assets, see [LICENSE-ICONS](LICENSE-ICONS).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance94

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

Every ~4 days

Total

44

Last Release

31d ago

Major Versions

13.8.1 → 14.2.12026-05-13

13.8.2 → 14.2.32026-05-27

13.8.3 → 14.2.42026-05-29

13.8.4 → 14.2.52026-06-22

13.9.0 → 14.3.02026-06-23

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/100145937?v=4)[gf-ntiedt](/maintainers/gf-ntiedt)[@gf-ntiedt](https://github.com/gf-ntiedt)

---

Top Contributors

[![gf-ntiedt](https://avatars.githubusercontent.com/u/100145937?v=4)](https://github.com/gf-ntiedt "gf-ntiedt (89 commits)")

---

Tags

contentblocksfaqtypo3typo3-cms-extension

### Embed Badge

![Health badge](/badges/gedankenfolger-gedankenfolger-faq/health.svg)

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

###  Alternatives

[friendsoftypo3/content-blocks

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

103519.9k57](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

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

40529.5k](/packages/wazum-sluggi)[typo3/cms-redirects

TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.

167.4M81](/packages/typo3-cms-redirects)[typo3/cms-form

TYPO3 CMS Form - Flexible TYPO3 frontend form framework that comes with a backend editor interface.

147.6M269](/packages/typo3-cms-form)[derhansen/sf_event_mgt

Event management and registration - Configurable event management and registration extension based on ExtBase and Fluid

66338.4k10](/packages/derhansen-sf-event-mgt)[typo3/cms-sys-note

TYPO3 CMS System Notes - Records with messages which can be placed on any page and contain instructions or other information related to a page or section.

116.3M39](/packages/typo3-cms-sys-note)

PHPackages © 2026

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