Banner - aber keine Bannerwerbung

Der NEAF (DIE Versammlung der nordamerikanischen Amateurastronomen) machte es im Frühjar 2021 bei seinem "virtuellen" Event vor: eine Hauptseite, auf die die wesentlichen Programmpunkte des Ereignisses angezeigt werden - das war die Vorlage. Unser Angebot sollte barrierefrei sein, nicht nur aus technischer, sondern auch aus kommerzieller Sicht. Der Zutritt zur Veranstaltungs-"Halle" sollte jedem, auch kurzfristig, möglich sein; wir wollten keine Eintrittsgelder erheben - das hätte für uns nur weitere Aufgaben bedeutet. Außerdem hatten wir auch keine Vorstellung, wieviele Teilnehmer überhaupt teilnehmen würden - der "echte" ATT konnte dafür keinen Anhalt bieten.

Meine prinzipielle Anfangsidee für die Website war darum eher klassisch, schon um eine leichte Bedienung und "Wiedererkennung" zu ermöglichen.

  • Quermenü mit den verschiedenen Beitragstypen, um schnell an die gesuchten Inhalte zu gelagen.
  • Hauptseite mit Banner-/Streifen-ähnlichen "Teasern" - das Foyer - von dort sollten alle Inhalte erreichbar sein.

Site Struktur

Für jeden thematischen Inhaltsblock (Foyer, Eröffnung, ...) wurde eine Seite angelegt; ein Menü-Punkt aus dem Kopfbereich und aus dem Fußbereich verwiesen jeweils auf diese Seite. Bis auf die Messe-Seite, die erst zu Beginn des ATT live geschaltet wurde, waren alle Seiten von Anfang an praktisch "Public". Die Messe-Seite jedoch als Zugriffsseite für die Ausstellerseiten sollte vorher nicht ohne Anmeldung erreichbar sein und wurde mit der Zugriffsebene "Registered" belegt.

Jede Inhaltsseite war dann eigentlich nur ein Container, der ein oder mehrere Module beinhaltete; diese habe ich entweder an bereits feste Positionen zugewiesen - oder, wenn eine Inhaltsseite mehr Module halten sollte als Positionen verfügbar waren - mehrere Module einer Position zugewiesen, um sie dann innerhalb der Position anordnen zu können. Dies bietet sich bspw. bei Seiten an, bei denen sich eine Gruppe von Modulen mehrfach wiederholt (wie der Seite Fachvorträge). Der  - recht einfache - Gesamtaufbau der gesamten Website sah folgendermaßen aus:

  • Seite Foyer mit den Elementen
    • Counter
    • Titel
    • Hinweis
    • Laufband
    • Eröffnungs-Banner
    • Virtuelle-Messe-Banner
    • Fachvorträge-Banner
    • Hinter-den-Kulissen-Banner
    • Kinder-und Jugend-Banner
    • Markt-Banner
    • Bistro-Banner
  • Seite Eröffnung mit den Elementen
    • Grußworte
    • Keynote
    • Diskussion
  • Seite Bühne mit den Elementen
    • Fachvorträge
    • Hinter-den-Kulissen
    • Kinder und Jugend
    • Sterne funkeln für jeden
    • Vermischtes
  • Seite Messe mit den Elementen
    • Aussteller 1
    • ...
    • Aussteller n
  • Seite Markt mit dem Element
    • Kleinanzeigen
  • Seite Bistro mit den Elemente
    • Bistro-Tische
    • Umfrage
    • Sonnenbeobachtung
    • Download-Bereich

 

Im Januar startete das Projekt, Anfang Mai war schon der Go-Live und zwischendurch sollte immer mehr bekannt werden - wie realisiert man eine fortwährende Weiterentwicklung ohne gleich ständig die produktive Webseite zu stören?

Releases und Staging

Dazu habe ich ein zweistufiges Staging eingesetzt: eine Site stellt den Entwicklungsstand dar, der bis zu einem Release weiterentwickelt wird, eine andere Site ist dann die produktive Site, die den letzten Stand anbietet. Für die Webseite att-digital.de habe ich einen zweiten Webauftritt innerhalb einer eigenen Domäne aufgebaut, um die Seiten ungestört aufbauen zu können und zum gewünschten Zeitpunkt als neues Release publizieren zu können. Dieses "Staging"-Verfahren ist in der industriellen Softwareentwicklung weit verbreitet. Der Aufbau von neuen Seiten geschah also innerhalb der Testumgebung mit einer eigenen Joomla-Instanz.

Nach Definition eines Fertigungsstands wurde mit akeeba backup die Site komplett in die produktive Umgebung transportiert und dort geladen. Akeeba Backup hat diesen Prozess deswegen gut unterstützt, weil alle Domain-spezifischen Elemente (Datenbank-Einstellungen, bestimmte User-Einstellungen, Site-URL) vor der Aktivierung der Site eingestellt werden konnten - ich hatte sie der Bequemlichkeit halber einfach in einem Dokument lokal gespeichert und konnte diese mit Copy&Paste immer wieder bei jedem Release-Gang übertragen.

Warum ist dieser Staging-Weg sinnvoll? Aus diversen Gründen kann man sich das Layout der Site "zerschießen"; eine falsche Einstellung und ein amoklaufendes Modul oder Plugin kann dafür sorgen, dass Teile des Webauftritts unbrauchbar werden. Darum habe ich in regelmäßigen Abständen ein Backup des aktuellen Standes ausgeführt, denn meine Freizeitarbeitszeit war kostbarer als die benötigte, kurze Wartezeit für das Backup. Dieses Backup habe ich anschließend an mindestens 2 weitere Orte transferiert (Hinweis: akeeba Backup löscht in der Standardeinstellung Backups, die älter als drei Versionen sind).

War das sinnvoll? Ja, an mindestens zwei Situationen kann ich mich erinnern, in denen der erneute Aufbau der geplanten Seite aufwändiger gewesen wäre als das Wiedereinspielen des Backups und der anschließenden Vermeidung des potenziellen Fehlers.

No way of return?

Der Standardweg war also die Übertragung des neuen Release-Standes von der Test-Site zur produktiven Site. Geht auch die umgekehrte Richtung?

Die größte Dynamik hatte der Seitenaufbau der Ausstellerseiten (s.u.). Die Aussteller haben sich an der produktiven Site angemeldet und ihren Daten übertragen (die Test-Site sollte von ihnen nicht benutzt werden).  Dadurch entstand eine Situation, in der die Benutzerdaten auf der produktiven Site aktueller waren als auf der Test-Site. Joomla 3 fasst aber alle wichtigen Elemente in genau einer Tabelle (<i>präfix</i>-users) zusammen - wenn man beim Site-Transfer von der Test-Site zur produktiven Site nichts Ungewünschtes überschreibt, kann man sich ein lässtiges Transferieren der Ausstellerdaten zur Test-Site übertragen - beim Importieren muss man nur die Tabellen ausklammen, die nicht überschrieben werden sollen. Glücklicherweise speichert Joomla 3 das Benutzerpassword als Hash; dieser Eintrag lässt sich einfach auch über ein SQL Statement (bspw. in phpAdmin) übertragen. Also war nicht nur der Weg von der Test-Site zur produkiven Site möglich, sondern auch die umgekehrte Richtung ließ sich verwenden. Übrigens habe ich beim Import grundsätzlich "Drop Table" verwendet; ich wollte mich nicht um ein Durcheinander kümmern müssen.

Weitere Beiträge …