Zum Inhalt springen

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.