schachbulle / contao-dsbapplayout-bundle
Schaltet für Aufrufe aus der App des Deutschen Schachbundes automatisch auf ein eigenes Seitenlayout um.
Package info
github.com/Samson1964/contao-dsbapplayout-bundle
Type:contao-bundle
pkg:composer/schachbulle/contao-dsbapplayout-bundle
Requires
- php: ^8.1
- contao/core-bundle: ^4.13 || ^5.0
Requires (Dev)
- contao/manager-plugin: ^2.0
Suggests
None
Provides
None
Conflicts
- contao/core: *
- contao/manager-plugin: <2.0 || >=3.0
Replaces
None
README
Schaltet Seitenaufrufe aus der App des Deutschen Schachbundes automatisch auf ein eigenes, schmuckloses Seitenlayout um.
Wozu
Die DSB-App bettet Seiten dieser Contao-Installation in einen eigenen Rahmen ein und bringt Kopfbereich, Navigation und Fußbereich selbst mit. Würde die Seite ihr reguläres Layout ausliefern, stünde alles doppelt auf dem Schirm. Das Bundle erkennt solche Aufrufe und ersetzt das Layout für die Dauer des Aufrufs durch eines, das ausschließlich die Hauptspalte ausgibt.
Erkennung
Die App setzt die Cookies appId und deviceId. Ist mindestens eines von
beiden gesetzt, greift die Umschaltung; andernfalls bleibt alles unverändert.
Weil die Entscheidung an einem Cookie hängt, wird die Antwort von jeder Zwischenspeicherung ausgenommen — sowohl vom geteilten Zwischenspeicher (Reverse-Proxy) als auch vom privaten des Browsers. Sonst bekäme irgendwann ein gewöhnlicher Besucher das App-Layout zu sehen oder umgekehrt.
Was ersetzt wird
Das erzeugte Layout ist bewusst minimal: eine Zeile, eine Spalte, als einziges
Element der Artikelbereich der Hauptspalte, dazu das Template fe_page_app.
Vom ursprünglichen Layout werden nur die Themen-Zuordnung und die Bilddichten
übernommen. Das Layout wird ausschließlich im Arbeitsspeicher gebaut und
niemals gespeichert.
Das Template fe_page_app.html5 gibt nur $this->main aus. Wer die Ausgabe
anpassen will, legt eine eigene Fassung unter templates/ an.
Voraussetzungen
- PHP 8.1 oder neuer (geprüft bis 8.4)
- Contao 4.13 LTS oder Contao 5
Einschränkung unter Contao 5
Contao 5.7 kennt zwei Layout-Arten. Bei der Art „Standard" rendert
weiterhin PageRegular, und der Hook getPageLayout feuert — das Bundle
arbeitet wie gewohnt. Bei der Art „Modern" übernimmt stattdessen der
ContentCompositionBuilder, der diesen Hook gar nicht mehr aufruft; das
Bundle bleibt dort wirkungslos. Dasselbe gilt für Seitentypen mit eigenem
Layout-Template.
Wer unter Contao 5 auf ein modernes Layout wechselt, braucht für die App also einen anderen Weg.
Installation
Über den Contao Manager oder per Composer:
composer require schachbulle/contao-dsbapplayout-bundle
Prüfstand
tests/pruef-kompatibilitaet.php prüft die Hook-Klasse gegen eine vorhandene
Contao-Installation: ob alle benutzten Contao-Klassen dort existieren, ob die
Signatur zum Aufruf in PageRegular passt und ob das Attribut #[AsHook]
gelesen wird.
php tests/pruef-kompatibilitaet.php /pfad/zur/contao-installation
Entwickler
Frank Hoppe