Architektur
Ziele
Es wird Wert gelegt auf:
- einfache Entwicklung
- geringe Komplexität
- moderne Webstandards
- wenig Abhängigkeiten
Struktur
Wordpress Plugin
Unter aura-wordpress/aura-wordpress.php
findet sich der Einstiegspunkt für das Wordpress-Plugin. Dort werden globalen Setup-Schritte der AURA-Integration aufgerufen.
Wordpress Integrationen
Der Einstiegspunkt des Plugins unter aura-wordpress/aura-wordpress.php
ruft mehrere Integrationen auf. Diese sind unter aura-wordpress/src/Environment/Wordpress/Integrations
abgelegt.
Die Aufgabe der Integrationen ist es die Feinheiten spezifischer Integrationsbestandteile umzusetzen. Dazu zählen:
- Definition von Frontend-Routen
- Definition von REST-API-Endpunkten
- Definition von Shortcodes
- Überschreiben interner Wordpress-Funktionen für spezifische Kontexte (z.B. überschreiben des Titel und Beitragsbilds für Sendereihen und Episoden)
Controller
Controller sind dafür zuständig die Daten für die Komponenten aufzubereiten. Üblicherweise rufen sie dafür Daten aus der AURA API ab.
Für die meisten Entitäten in der AURA API gibt es einen separaten Controller im aura-wordpress/src/Controllers
Verzeichnis.
Komponenten (Views)
Die einzelnen Elemente der AURA-Integration sind als Komponenten konzipiert, die als Shortcode in Wordpress eingebunden werden.
Üblicherweise setzen sich Komponenten zusammen aus:
- einer View-Klasse in
aura-wordpress/src/Views
- einem Template in
aura-wordpress/src/Views/templates
- und meist Assets in
aura-wordpress/assets
.
Die Komponenten selbst sind als server-seitig-generierte Web Components realisiert und nutzen die Declarative Shadow DOM.
Der Effekt ist, dass die Komponenten bei der Einbindung fast vollständig vom Styling der einbindenden Seite isoliert sind. Ihr Erscheinungsbild ist damit sehr berechenbar. Für Anpassungen des Erscheinungsbilds ist es dafür allerdings nötig die Dateien in aura-wordpress/assets
zu bearbeiten. Eine Anpassung des CSS eines Wordpress-Themes hat im Wesentlichen keine Auswirkungen auf das Erscheinungsbild der Komponente auf der Seite. Viele der Komponenten definieren allerdings part
, Attribute die mittels des ::part(...)
Selektors eine Anpassung aus dem Theme der Wordpress-Seite heraus erlauben.