PHPackages                             schachbulle/contao-fen-bundle - 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. schachbulle/contao-fen-bundle

ActiveContao-bundle[Utility &amp; Helpers](/categories/utility)

schachbulle/contao-fen-bundle
=============================

Stellt Schachdiagramme aus FEN-Notation dar, im Inhaltselement wie auch als Inserttag.

2.0.1(2w ago)057LGPL-3.0-or-laterPHPPHP ^8.1

Since Jun 25Pushed 1w ago1 watchersCompare

[ Source](https://github.com/Samson1964/contao-fen-bundle)[ Packagist](https://packagist.org/packages/schachbulle/contao-fen-bundle)[ Docs](https://github.com/Samson1964/contao-fen-bundle)[ RSS](/packages/schachbulle-contao-fen-bundle/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (14)Versions (8)Used By (0)

FEN-Schachdiagramme für Contao
==============================

[](#fen-schachdiagramme-für-contao)

Stellt Schachstellungen als Bild dar. Die Stellung wird in der Forsyth-Edwards-Notation (FEN) eingegeben — der Schreibweise, die jedes Schachprogramm und jede Partiedatenbank ausgibt. Das Diagramm entsteht auf dem Server als PNG-Bild und braucht im Browser weder JavaScript noch eine eigene Schriftart.

Zwei Wege führen zum Diagramm: das Inhaltselement **FEN-Diagramm** mit allen Einstellmöglichkeiten und der Inserttag `{{fen::…}}` für schnell eingestreute Stellungen im Fließtext.

Funktionen
----------

[](#funktionen)

- Inhaltselement mit Unterschrift und umfließendem Text
- Inserttag `{{fen::…}}` für jede Stelle, an der Contao Inserttags ersetzt
- 16 Figurensätze, Feldgröße von 20 bis 40 Pixeln
- Frei wählbare Farben für helle Felder, dunkle Felder und Rahmen
- Koordinaten wahlweise ein- oder ausgeblendet
- Brett drehbar (Schwarz unten)
- Systemweite Voreinstellungen, auf Wunsch verbindlich für alle Diagramme

Voraussetzungen
---------------

[](#voraussetzungen)

SoftwareVersionPHP8.1 oder neuer, mit der Erweiterung `gd`Contao4.13 LTS oder Contao 5Die PHP-Erweiterung `gd` zeichnet das Bild. Sie ist bei nahezu jedem Hoster vorhanden; ob sie läuft, zeigt im Contao Manager die Systemprüfung oder auf der Kommandozeile `php -m`.

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

[](#installation)

Im Contao Manager das Paket `schachbulle/contao-fen-bundle` suchen und installieren, oder auf der Kommandozeile:

```
composer require schachbulle/contao-fen-bundle
```

Danach die Datenbank aktualisieren — im Contao Manager unter „System-Wartung“ oder auf der Kommandozeile:

```
vendor/bin/contao-console contao:migrate
```

Dabei entstehen die zusätzlichen Felder in `tl_content`. Eine eigene Tabelle legt die Erweiterung nicht an.

Schnelleinstieg
---------------

[](#schnelleinstieg)

1. Im Backend einen Artikel öffnen und ein neues Inhaltselement anlegen.
2. Als Typ unter *Schach-Elemente* den Eintrag **FEN-Diagramm** wählen.
3. Im Feld *FEN-Code* die Stellung eintragen. Voreingestellt ist die Grundstellung.
4. Speichern — fertig. Alle weiteren Felder sind wahlfrei.

Das Inhaltselement
------------------

[](#das-inhaltselement)

### FEN-Code und Diagrammtext

[](#fen-code-und-diagrammtext)

FeldBedeutung**FEN-Code**Die Stellung, siehe [FEN in aller Kürze](#fen-in-aller-k%C3%BCrze). Ein vollständiger Code darf eingefügt werden; beim Speichern bleibt davon nur der Stellungsteil übrig.**Diagramm-Unterschrift**Erscheint unter dem Brett und zusätzlich als Alternativtext des Bildes. Gut geeignet für Angaben wie „Weiß am Zug, matt in zwei Zügen“.### Figuren

[](#figuren)

FeldBedeutung**Figurensatz**Einer von 16 Sätzen, siehe [Figurensätze](#figurens%C3%A4tze).**Figurengröße**Kantenlänge eines Feldes in Pixeln: 20, 25, 30, 35 oder 40. Das Brett ist achtmal so breit, zuzüglich Rahmen und Koordinaten.### Diagramm (Rahmen)

[](#diagramm-rahmen)

FeldBedeutung**Diagramm-Rahmen**Schaltet den Rahmen ein. Erst dann erscheinen die beiden folgenden Felder.**Rahmenbreite**1 bis 6 Pixel.**Rahmenfarbe**Über den Farbwähler oder als sechsstellige Hexadezimalzahl ohne `#`.### Felderfarben

[](#felderfarben)

FeldBedeutung**Farbe weiße Felder**Voreinstellung `eecfa3` (heller Sandton).**Farbe schwarze Felder**Voreinstellung `8a8a8a` (mittleres Grau).### Diagramm (Darstellung)

[](#diagramm-darstellung)

FeldBedeutung**Koordinaten anzeigen**Linien `a`–`h` über und unter dem Brett, Reihen `1`–`8` links und rechts. Die Beschriftung liegt in einem weißen Streifen und vergrößert das Bild.**Brett drehen**Zeigt die Stellung aus der Sicht von Schwarz: Schwarz steht unten, die Koordinaten laufen rückwärts. Der FEN-Code bleibt unverändert.### Text

[](#text)

FeldBedeutung**Text**Beliebiger Fließtext, im Rich-Text-Editor bearbeitbar. Inserttags sind erlaubt.**Diagrammausrichtung**Legt fest, wo das Diagramm im Verhältnis zum Text steht: *oberhalb*, *links*, *rechts* oder *unterhalb*. Bei *links* und *rechts* umfließt der Text das Brett.Der Inserttag
-------------

[](#der-inserttag)

Für eine Stellung mitten im Fließtext genügt der Inserttag. Er funktioniert in jedem Feld, in dem Contao Inserttags ersetzt — im Text eines beliebigen Inhaltselements, in Nachrichten, in Ereignissen, in Formularerklärungen.

```
{{fen::r1bqkbnr/pppp1ppp/2n5/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R}}

```

Ein vollständiger FEN-Code darf ebenfalls stehen, alles ab dem ersten Leerzeichen wird nicht ausgewertet:

```
{{fen::r1bqkbnr/pppp1ppp/2n5/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 1}}

```

Zwei Dinge unterscheiden den Inserttag vom Inhaltselement:

- Er kennt nur die Stellung. Figurensatz, Größe, Farben, Rahmen und Koordinaten kommen immer aus den Systemeinstellungen.
- Das Diagramm steht als eigener Block unterhalb des Absatzes, in dem der Tag steht — nicht mitten im Satz.

Mit `{{cache_fen::…}}` steht dieselbe Ersetzung zur Verfügung, ohne dass Contao sie mit der Seite zwischenspeichert. Nötig ist das für Diagramme praktisch nie, weil dieselbe Stellung immer dasselbe Bild ergibt.

Systemeinstellungen
-------------------

[](#systemeinstellungen)

Unter *System → Einstellungen* gibt es den Bereich **FEN-Diagramm**. Die Werte dort sind die Vorgabewerte für neu angelegte Inhaltselemente und zugleich die Einstellungen, mit denen der Inserttag zeichnet.

Der Haken **Immer Voreinstellungen benutzen** macht diese Werte verbindlich: Sämtliche Diagramme der Website sehen dann gleich aus, und im Inhaltselement verschwinden die Felder für Figuren, Farben, Rahmen und Koordinaten aus der Eingabemaske. Übrig bleiben FEN-Code, Unterschrift, Brettdrehung und Text. Die bereits gespeicherten Werte gehen dabei nicht verloren — sie werden nur nicht mehr ausgewertet und erscheinen wieder, sobald der Haken fällt.

FEN in aller Kürze
------------------

[](#fen-in-aller-kürze)

Ein FEN-Code beschreibt die Stellung Reihe für Reihe, beginnend mit der achten Reihe (oben, bei Schwarz) und endend mit der ersten. Die Reihen trennt ein Schrägstrich.

- Großbuchstaben sind weiße Steine, Kleinbuchstaben schwarze.
- `K` König, `Q` Dame, `R` Turm, `B` Läufer, `N` Springer, `P` Bauer.
- Eine Ziffer von `1` bis `8` steht für so viele leere Felder in Folge.

Die Grundstellung lautet damit:

```
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR

```

Ein weißer König auf e1 gegen einen schwarzen König auf e8:

```
4k3/8/8/8/8/8/8/4K3

```

Vollständige FEN-Codes führen hinter der Stellung noch Zugrecht, Rochade- und En-passant-Rechte sowie zwei Zugzähler auf. Für ein Bild ist davon nichts von Belang; diese Angaben dürfen mitgeliefert werden und werden verworfen.

Unbekannte Zeichen werden übergangen, fehlende Felder bleiben leer. Ein Tippfehler führt also zu einem unvollständigen Brett, nicht zu einer Fehlermeldung.

Figurensätze
------------

[](#figurensätze)

`adventurer`, `alfonso`, `cases`, `condal`, `harlequin`, `kingdom`, `leipzig`, `line`, `lucena`, `magnetic`, `mark`, `marroquin`, `maya`, `mediaeval`, `merida`, `motif`

Voreingestellt ist `merida` — der Satz, den auch die meisten Schachbücher verwenden. `line` und `motif` sind Strichzeichnungen und eignen sich für kleine Diagramme, `mediaeval` und `kingdom` sind reich verziert und wollen mindestens 35 Pixel Feldgröße.

Wie das Bild entsteht
---------------------

[](#wie-das-bild-entsteht)

Das Diagramm wird nicht in die Seite eingebettet, sondern über eine eigene Adresse geladen:

```
/fen/diagramm.png?fen=4k3/8/8/8/8/8/8/4K3&satz=merida&feld=35&koordinaten=1&drehen=0&rand=0&randfarbe=636060&hell=eecfa3&dunkel=8a8a8a

```

Diese Adresse baut das Inhaltselement beziehungsweise der Inserttag zusammen; von Hand aufgerufen werden muss sie nie. Die Antwort ist ein Jahr lang gültig und trägt ein ETag, sodass Browser und vorgeschaltete Zwischenspeicher dasselbe Diagramm nur einmal holen.

Alle Werte werden beim Zeichnen geprüft. Unbekannte Figurensätze, unsinnige Größen oder fehlerhafte Farbangaben führen zur jeweiligen Voreinstellung, nie zu einem Fehler. Feldgröße und Rahmenbreite sind nach oben begrenzt, damit ein von Hand zusammengebauter Aufruf den Server nicht mit riesigen Bildern beschäftigen kann.

Eigene Vorlage
--------------

[](#eigene-vorlage)

Die Vorlage `ce_fen.html5` lässt sich wie jede Contao-Vorlage im Verzeichnis `templates/` überschreiben. Zur Verfügung stehen darin:

VariableInhalt`$this->src`Adresse des Diagrammbildes`$this->diasize`Kantenlänge des Bildes in Pixeln`$this->caption`Diagramm-Unterschrift`$this->text`Der Text des Elements`$this->floatClass`Ausrichtung: `above`, `left`, `right` oder `below``$this->alignment``left` oder `right`, sonst leerÜber das Feld *Vorlage* im Bereich *Vorlageneinstellungen* des Elements lässt sich außerdem eine eigene Vorlage auswählen, deren Name mit `ce_fen_` beginnt.

Umstieg von Version 1.x
-----------------------

[](#umstieg-von-version-1x)

Version 2.0.0 zeichnet die Diagramme über eine Symfony-Route statt über die Datei `fen.php` im Asset-Verzeichnis. Für die Inhalte ändert sich nichts — Datenbankfelder, Inhaltselement und Inserttag bleiben, wie sie waren. Zu beachten ist:

- **Zwischenspeicher leeren.** Erst danach kennt Contao die neue Route und die Seiten enthalten die neue Bildadresse.
- **Eigene Kopien von `ce_fen.html5` anpassen.** Statt `$this->params` und dem fest eingetragenen Pfad `/bundles/contaofen/fen.php` gibt es jetzt die fertige Adresse in `$this->src`.
- **Feldrechte prüfen.** Die Felder des Inhaltselements sind jetzt rechtepflichtig. Benutzergruppen, die nicht als Administrator arbeiten, brauchen sie unter *Benutzergruppen → Felder* freigegeben. Administratoren sind nicht betroffen.
- **Die Einstellung „Nur Gäste anzeigen“** ist aus dem Element entfallen. Contao hat sie in Version 5 gestrichen.

Fehlersuche
-----------

[](#fehlersuche)

**Es erscheint kein Bild, nur der Rahmen.** Der häufigste Grund ist ein nicht geleerter Zwischenspeicher nach dem Update. Danach prüfen, ob die Adresse `/fen/diagramm.png?fen=4k3/8/8/8/8/8/8/4K3` im Browser ein Brett zeigt.

**Die Adresse liefert „Seite nicht gefunden“.** Dann ist die Route nicht registriert. Im Contao Manager den Zwischenspeicher neu aufbauen oder auf der Kommandozeile `vendor/bin/contao-console cache:clear`.

**Die Felder bleiben leer, nur das Brettmuster erscheint.** Der Figurensatz fehlt: Das Verzeichnis `vendor/schachbulle/contao-fen-bundle/src/Resources/figuren` ist unvollständig, die Erweiterung sollte neu installiert werden.

**Das Bild ist verzerrt.** Eine eigene Vorlage rechnet die Bildbreite noch selbst aus. Statt eigener Rechnung `$this->diasize` verwenden.

Herkunft der Figurengrafiken
----------------------------

[](#herkunft-der-figurengrafiken)

Die Figurensätze und das ursprüngliche Zeichenverfahren stammen aus dem Projekt *ChessImager* von Steven L. Eddins und stehen unter der MIT-Lizenz; der Lizenztext liegt bei den Grafiken in `src/Resources/figuren/license.txt`. Der Zeichencode selbst wurde für Version 2.0.0 neu geschrieben.

Lizenz
------

[](#lizenz)

LGPL-3.0-or-later

**Frank Hoppe**

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance98

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity70

Established project with proven stability

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

Recently: every ~207 days

Total

7

Last Release

15d ago

Major Versions

1.2.0 → 2.0.02026-08-02

PHP version history (3 changes)1.0.0PHP ^5.6 || ^7.0

1.1.0PHP ^5.6 || ^7.0 || ^8.0

2.0.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/53ee29e676dd83ca6683e27788cc7143a46d2bc1e10945ae37730bd4fec0c29c?d=identicon)[Samson1964](/maintainers/Samson1964)

---

Top Contributors

[![Samson1964](https://avatars.githubusercontent.com/u/4542730?v=4)](https://github.com/Samson1964 "Samson1964 (9 commits)")

---

Tags

contaofenschachdiagrammstellung

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/schachbulle-contao-fen-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/schachbulle-contao-fen-bundle/health.svg)](https://phpackages.com/packages/schachbulle-contao-fen-bundle)
```

###  Alternatives

[symfony/framework-bundle

Provides a tight integration between Symfony components and the Symfony full-stack framework

3.6k257.3M12.4k](/packages/symfony-framework-bundle)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k18.3M430](/packages/easycorp-easyadmin-bundle)[contao-community-alliance/dc-general

Universal data container for Contao

1581.4k93](/packages/contao-community-alliance-dc-general)[contao/manager-bundle

Provides the Contao Managed Edition

181.3M83](/packages/contao-manager-bundle)

PHPackages © 2026

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