heimseiten / contao-primary-page-image-bundle
Rüstet das Contao-6-Feature „Seitenbild“ für Contao 5.7 nach: In den Seiteneinstellungen lässt sich ein Bild festlegen, das als primaryImageOfPage in die JSON-LD-Daten der Seite geschrieben wird und im Template über contao.page.primaryImage zur Verfügung steht.
Package info
github.com/heimseiten/contao-primary-page-image-bundle
Type:contao-bundle
pkg:composer/heimseiten/contao-primary-page-image-bundle
Requires
- php: ^8.3
- contao/core-bundle: ^5.7
- spatie/schema-org: ^3.10 || ^4.0
Requires (Dev)
- contao/manager-plugin: ^2.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Rüstet das Contao-6-Feature „Seitenbild“ (Primary Page Image) für Contao 5.7 nach.
In den Seiteneinstellungen lässt sich unter Bildeinstellungen ein Bild wählen. Contao
schreibt es als primaryImageOfPage in die JSON-LD-Daten der Seite — damit ist gesteuert,
welches Bild Suchmaschinen der Seite zuordnen.
Installation
composer require heimseiten/contao-primary-page-image-bundle vendor/bin/contao-console contao:migrate
Die Migration legt die Spalte tl_page.primaryImage an.
Verwendung im Template
Das Bild steht als UUID am Seitenmodell zur Verfügung und lässt sich wie jede andere Bildquelle verarbeiten, etwa als Kopfgrafik:
{% set myimage = figure(contao.page.primaryImage|default, [1200, 500, 'crop']) %}
Verhältnis zu Contao 6
Feldname (primaryImage), Spaltentyp (binary(16)) und Palettenposition entsprechen
exakt dem Contao-Kern ab Version 6 (contao/contao#9565).
Ab Contao 6 wird die Erweiterung nicht mehr benötigt, denn der Kern bringt das Seitenbild selbst mit. Der Versionsbereich endet deshalb bewusst bei Contao 5: Ein Update auf Contao 6 meldet einen Konflikt, solange die Erweiterung installiert ist. Das ist als Hinweis gedacht, sie bei dieser Gelegenheit zu entfernen. Die Spalte bleibt dabei bestehen und der Kern übernimmt die vorhandenen Daten unverändert.
Unabhängig davon hält sich die Erweiterung auch technisch zurück, falls das Feld schon vorhanden ist: Das DCA-Feld wird nur registriert, wenn es noch nicht existiert, und die JSON-LD-Eigenschaft nur ergänzt, wenn sie nicht bereits gesetzt ist.
Wie im Kern erscheint das Feld nur beim Seitentyp „Reguläre Seite“.
Wie es funktioniert
Contao 6 ergänzt den JSON-LD-Knoten direkt in der CoreResponseContextFactory. In
Contao 5.7 ist dieselbe Stelle ohne Eingriff in den Kern erreichbar: Das JsonLdEvent
wird in JsonLdManager::collectFinalScriptFromGraphs() ausgelöst, also unmittelbar vor
der Ausgabe der Graphen. Contao selbst nutzt diesen Weg für seinen
ContaoJsonLdSchemaListener.
Voraussetzungen
PHP 8.2+, Contao 5.7
Lizenz
GPL-3.0-or-later