Zum Inhalt springen
Fallstudie

Website der FF Echsenbach

Die Website der Freiwilligen Feuerwehr Echsenbach. Wir haben 946 Berichte ab 2004 nach WordPress übernommen und die Seite dem Team übergeben.

  1. Ausgangslage

    Seit Dezember 2004 veröffentlichte die Feuerwehr ihre Berichte auf einer individuell programmierten PHP-Seite mit eigener Datenbank. Das Archiv war auf 946 Berichte angewachsen, verteilt auf zwei unterschiedlich aufgebaute Tabellen. Die ältere speicherte das Datum als Text, zum Beispiel 10. Dez 2004 10:39. Die neuere, ab 2012 in Verwendung, hielt die ausgerückten Fahrzeuge als eine Ja/Nein-Spalte pro Fahrzeug fest, die Alarmstufe als Kürzel wie T1 und den Einsatzleiter als freien Text.

    Die neue Website sollte all das übernehmen und jeden Bericht mit seinen Fahrzeugen und Sachgebieten verknüpfen. Nach dem Launch würde das Team der Feuerwehr die Seite selbst betreuen, ein neuer Bericht oder ein neues Fahrzeug durfte also nicht von uns abhängen. Eine Freiwillige Feuerwehr hat kein Budget für laufende Betreuung, deshalb musste die Seite ohne Wartungsvertrag funktionieren.

  2. Was wir gebaut haben

    Wir haben WordPress mit Elementor und JetEngine empfohlen, nachdem wir dem Team gezeigt hatten, was damit geht: Jeder Fachbereich gestaltet seine Seiten selbst aus Bausteinen, ohne Entwickler. Vor der Übergabe haben wir gezeigt, wie man die Seite pflegt und weitere Seiten baut.

    Wir haben die Seite in WordPress gebaut, mit JetEngine-Inhaltstypen für Berichte, Fahrzeuge, Sachgebiete, Mitglieder und Bürgerservice-Seiten, die miteinander verknüpft sind. Ein Bericht verweist auf seine Fahrzeuge, seine Sachgebiete und seinen Einsatzleiter. Aus diesen Verknüpfungen baut ein Shortcode auf jedem Bericht die Tabelle mit den Einsatzdetails: Einsatztyp, Alarmstufe, Einsatzbeginn, Einsatzleiter, Einsatzkräfte und Fahrzeuge. Zeilen ohne Daten fallen weg, und ein Bericht, der nur ein Datum hat, zeigt ein Einsatzdatum statt eines Einsatzbeginns um 00:00 Uhr. Die Menüs für Fahrzeuge, Sachgebiete und Bürgerservice entstehen aus den Einträgen selbst. Ein neues Fahrzeug taucht dort auf, ohne dass jemand das Menü bearbeitet, und ein außer Dienst gestelltes Fahrzeug fällt heraus. Das Menü verlinkt stattdessen auf eine Seite mit den ehemaligen Fahrzeugen.

    Für den Umzug haben wir ein Skript geschrieben, das den Datenbank-Export liest, die alten Spalten auf den neuen Aufbau abbildet und Alarmkürzel wie B2 in Einsatztyp und Alarmstufe zerlegt. Der Import läuft in Etappen, 100 Berichte auf einmal oder 10, wenn auch die Fotos mitkommen, und macht von selbst weiter, damit kein Schritt in das Zeitlimit des Servers läuft. Ein erneuter Durchlauf aktualisiert einen Bericht mit gleichem Titel und Datum, statt ihn ein zweites Mal anzulegen. So konnten wir eine Zuordnung korrigieren und den ganzen Import noch einmal laufen lassen. Die Fotos kamen Bericht für Bericht von der alten Seite: das erste als Beitragsbild, die übrigen als Galerie.

    Am unordentlichsten waren die Einsatzleiter. 259 Berichte nannten einen, in einem Freitextfeld mit 90 verschiedenen Einträgen: Namen mit und ohne Dienstgrad, Nachname vorne oder hinten, einige mit kaputten Zeichen, ein Feld mit zwei Personen. Der Import legte pro Eintrag ein Mitglied an. Ein Bereinigungswerkzeug reparierte danach die Zeichen, trennte den Dienstgrad in ein eigenes Feld ab, brachte die Namen in eine einheitliche Reihenfolge und führte Doppelte samt ihren Verknüpfungen zu Berichten zusammen. Es zeigt eine Vorschau, bevor es etwas ändert, und listet Namen, die sich nur in wenigen Buchstaben unterscheiden, zur Entscheidung durch einen Menschen auf, denn zwei ähnliche Namen können zwei Personen gehören.

    Die Sortierung der Mitglieder nach Dienstgrad brauchte drei Korrekturen in den letzten drei Projekttagen. Die erste Fassung schrieb die Datenbankabfrage hinter jeder Mitgliederliste um. Sie blendete Mitglieder aus, deren Dienstgrad keine Sortierzahl hatte, und führte zu fehlerhaften Seiten, bis wir sie ersetzt haben. Die Fassung, die geblieben ist, ist einfacher. Jedes Mitglied trägt die Sortierzahl seines Dienstgrads in einem eigenen Feld, das sich aktualisiert, wenn das Mitglied gespeichert wird, sein Dienstgrad wechselt oder sich die Reihenfolge der Dienstgrade ändert. Mitglieder ohne Dienstgrad erscheinen trotzdem, am Ende der Liste.

  3. Stack

    WordPress mit Elementor für die Seitenlayouts und JetEngine für die Inhaltstypen und ihre Verknüpfungen. Unser eigener Code ist PHP, das sich in WordPress einhängt: der Shortcode für die Einsatzdetails, der Menübau, die Sortierung nach Dienstgrad, Anzeigebedingungen für Elementor-Elemente sowie die Werkzeuge für Import und Bereinigung im Adminbereich. Im Alltag arbeitet das Team im normalen WordPress-Editor.

  4. Ergebnis

    Die Seite ist live, mit dem Archiv zurück bis Dezember 2004. Das Projekt lief rund dreieinhalb Monate, von Ende Dezember 2025 bis Mitte April 2026. Seit dem Launch betreut das Team der Feuerwehr die Seite selbst und veröffentlicht laufend neue Berichte. Die Tabelle mit den Einsatzdetails füllt sich bei neuen Berichten aus denselben Verknüpfungen wie bei den alten.

    Der Umzug von der alten Seite und ihrer Datenbank war der größte Teil der Arbeit. Der älteste Export hatte die Umlaute schon durch einen Kodierungsfehler verloren, deshalb zeigen manche frühe Berichte Fragezeichen. Wenn Sie eine alte Seite umziehen, prüfen Sie zuerst die Zeichenkodierung des Exports, lesen Sie jedes Freitextfeld, bevor Sie es zuordnen, bauen Sie den Import so, dass er zweimal laufen darf, und holen Sie die Fotos, solange der alte Server noch läuft.

    Zur Live-Seite

Eine dampfende grüne Emailtasse neben einem Buch auf einem Tisch am Fenster.

Wollen Sie so etwas für Ihr Unternehmen?

Erzählen Sie uns, was Sie brauchen. Wir melden uns innerhalb eines Werktags.

Fabian Wagner, Gründer von Blax Software

Sie sprechen direkt mit Fabian Wagner, Gründer

Kein Vertrieb dazwischen: Er liest jede Anfrage selbst.

Lieber telefonieren? +•• ••• ••• •• ••