MFI Example Page
Eine fertige Website-Vorlage, die den Mähbarkeitsindex für deinen Standort anzeigt. Sie holt automatisch Wetterdaten, lässt daraus über die MFI API den Indexwert berechnen und stellt das Ergebnis verständlich dar. Du lädst die Dateien auf deinen Webspace, durchläufst einen Einrichtungsassistenten im Browser – fertig.
Sehen, was dabei herauskommt: mep.maehbarkeitsindex.de – eine laufende Installation dieser Vorlage.
Vom Zugangsschlüssel zur fertigen Seite
Der Mähbarkeitsindex bewertet anhand von Wetterdaten, ob gerade gemäht werden sollte. Wer ihn auf der eigenen Website zeigen möchte, kann die MFI API nutzen – steht dann aber vor derselben Arbeit: Wetterdaten beschaffen, in das richtige Format bringen, das Ergebnis speichern und ansprechend darstellen.
Genau diesen Teil nimmt die MFI Example Page ab. Sie ist kein Plugin und kein Baukasten, sondern eine vollständige, lauffähige Website: ein Satz Dateien, den du auf deinen eigenen Webspace legst und danach frei umbauen kannst.
Was im Hintergrund passiert
- 1. Wetterdaten für deinen Standort abrufen
- 2. Werte in das Format der MFI API bringen und um eigene Langzeitwerte ergänzen
- 3. Berechnung bei der MFI API anfragen
- 4. Ergebnis in der eigenen Datenbank speichern
- 5. Ergebnis auf der Website anzeigen
Das läuft automatisch im Hintergrund – Besucher sehen immer den zuletzt berechneten Stand.
Was du am Ende siehst
Eine Seite mit einer Empfehlung im Klartext, dem Indexwert von 0 bis 100 mit Farbskala und den einzelnen Prüfungen samt Begründung – etwa warum der Rasen gerade zu nass ist oder ob die Temperatur passt. Dazu auf Wunsch eine Tabelle der Messwerte, die in die Berechnung eingeflossen sind.
Am schnellsten überzeugt ein Blick auf das laufende Beispiel.
Live-Beispiel
Unter mep.maehbarkeitsindex.de läuft eine unveränderte Installation dieser Vorlage – genau das, was du nach dem Einrichtungsassistenten vor dir hast. Die Seite zeigt den aktuellen Indexwert, die ausgeführten Prüfungen und die gesendeten Messwerte, ohne dass dort etwas angepasst wurde.
Bewusst nicht enthalten: weitere Wetterquellen, Verlaufsdiagramme, Mehrsprachigkeit, mehrere Standorte gleichzeitig, ein einbettbares Widget und ausformulierte Rechtstexte. Die Vorlage bleibt schlank, damit sie verständlich und erweiterbar bleibt.
Ist das etwas für mich?
Die Vorlage richtet sich an beide Seiten – an Menschen, die einfach eine funktionierende Seite möchten, und an solche, die tiefer eingreifen wollen.
Wenn du wenig Technikerfahrung hast
Du brauchst keine Programmierkenntnisse. Nötig ist, dass du Dateien auf deinen Webspace hochladen kannst und im Kundenmenü deines Hosters eine Datenbank anlegst. Alles Weitere erledigt der Einrichtungsassistent im Browser: Er prüft jede Eingabe sofort und sagt dir in verständlichen Worten, was noch fehlt.
- Aufwand: etwa 15 bis 30 Minuten
- Benötigt: Webspace, FTP-Zugang, zwei kostenlose Zugangsschlüssel
- Nicht benötigt: Programmierkenntnisse, Kommandozeile, Git
Wenn du entwickelst
Vanilla PHP ohne Framework, ohne Composer, ohne Build-Schritt. Klar getrennte Schichten für Wetterquelle, API-Zugriff, Datenhaltung und Darstellung, eigener Autoloader, durchgehend typisiert. Der Code ist bewusst ausführlich kommentiert, weil er zum Weiterbauen gedacht ist.
- Eigene Wetterquelle über eine schmale Schnittstelle ergänzbar
- Ausgabe über einzelne Bausteine frei platzierbar
- Eigene Anpassungen bleiben bei Updates erhalten
Was die Vorlage mitbringt
Alles ist fertig eingerichtet und im laufenden Betrieb erprobt. Die folgenden Angaben beschreiben den Auslieferungszustand – was danach aus deinen eigenen Anpassungen folgt, steht weiter unten.
Vollständige MFI-Darstellung
Empfehlung im Klartext, Indexwert mit Farbskala, alle fünf Prüfungen mit den deutschen Begründungen der API sowie Angaben dazu, wann zuletzt gemessen wurde.
Frei platzierbare Bausteine
Die Ausgabe besteht aus drei Bausteinen, die sich einzeln auf jeder Seite einsetzen lassen – auf der Startseite, einer Unterseite oder beidem.
Einrichtung im Browser
Vier geführte Schritte. Jede Eingabe wird mit echten Verbindungen geprüft, nicht nur auf Vollständigkeit. Am Ende entfernt sich der Assistent selbst.
Wetterdaten inklusive
Die Daten kommen aus dem kostenfreien OpenWeather-Zugang und werden automatisch in das Format der MFI API übersetzt. Du musst nichts umrechnen.
Langzeitwerte aus eigener Historie
Regensummen, Zeit seit dem letzten Regen und Tiefsttemperaturen berechnet die Vorlage aus den gespeicherten Läufen – Werte, die die Wetterquelle selbst nicht liefert.
Zwei Betriebsarten
Zeitgesteuert im Hintergrund oder beim Seitenaufruf. Damit läuft die Vorlage auch bei Hostern ohne Cronjob-Funktion.
Schutz vor Überlastung
Sperre gegen gleichzeitige Läufe, Mindestabstand zwischen zwei Aktualisierungen und ein hartes Tageslimit. So läufst du nicht versehentlich in Grenzen der Dienste.
Eigene Seiten ohne Umwege
Eine Datei im richtigen Ordner ablegen genügt – Adresse, Navigation, Meta-Angaben und Sitemap ziehen automatisch nach.
Updates ohne Verluste
Deine Seiten, dein Kopf- und Fußbereich, deine Gestaltung und deine Konfiguration liegen getrennt vom mitgelieferten Bestand und überstehen jede neue Fassung.
Eigener Kopf- und Fußbereich
Beide lassen sich vollständig durch eigene Fassungen ersetzen – auch der richtige Ort für Links auf Impressum und Datenschutz, die nicht in der Hauptnavigation stehen sollen.
Barrierefrei ausgeliefert
WCAG 2.2 AA in hellem und dunklem Design, nachgemessene Kontraste, Status nie nur über Farbe erkennbar, vollständig ohne Maus und ohne JavaScript bedienbar. Gilt für den Auslieferungszustand – eigene Farben und Inhalte musst du selbst prüfen.
Datensparsam ausgeliefert
Keine Cookies im laufenden Betrieb, kein Tracking, keine externen Schriftarten oder Fremdinhalte. Alles liegt auf deinem eigenen Server. Sobald du eigene Dienste einbindest, gilt das für diese Teile nicht mehr.
Für Suchmaschinen vorbereitet
Meta-Angaben, Vorschaubilder für soziale Netzwerke und strukturierte Daten sind gesetzt;
sitemap.xml und
robots.txt
entstehen automatisch.
Saubere Fehlerbehandlung
Besucher sehen nie Serverpfade oder technische Fehlermeldungen. Einzelheiten landen in einer Protokolldatei, die nur du einsiehst.
Diagnose auf einen Schlag
Ein mitgeliefertes Prüfwerkzeug kontrolliert Umgebung, Datenbank, Erreichbarkeit der API und Schreibrechte in einem Durchlauf und benennt Probleme konkret.
Was du brauchst
Ein gewöhnliches Webhosting-Paket mit PHP und MySQL genügt – nichts Besonderes, nichts Teures. Composer, npm und Build-Werkzeuge werden nicht benötigt.
| Anforderung | Details |
|---|---|
| PHP | ab Version 8.2, empfohlen 8.3 oder neuer, mit den Erweiterungen pdo_mysql, curl, json, mbstring |
| Datenbank | MySQL ab 8.0 oder MariaDB ab 10.4 |
| Webserver | Apache mit mod_rewrite; die nötige Konfigurationsdatei liegt bei |
| MFI-Zugangsschlüssel | kostenlos über die Registrierung |
| Wetter-Zugangsschlüssel | kostenlos bei OpenWeather – Hintergründe unter OpenWeather-Anbindung |
Kurz erklärt, falls die Begriffe neu sind
- PHP ist die Programmiersprache, in der die Vorlage geschrieben ist. Nahezu jedes Hosting-Paket bietet sie an; entscheidend ist die Version.
- Datenbank meint den Ort, an dem die berechneten Werte gespeichert werden. Bei den meisten Hostern legst du eine im Kundenmenü mit wenigen Klicks an und erhältst Name, Benutzer und Passwort.
- Zugangsschlüssel (auch API-Key) ist eine lange Zeichenfolge, mit der sich deine Website bei einem Dienst ausweist – vergleichbar mit einem Passwort, das nur dein Server kennt.
- FTP ist der übliche Weg, Dateien auf einen Webspace zu übertragen. Die Zugangsdaten stehen ebenfalls im Kundenmenü deines Hosters.
Beide Schlüssel früh beantragen: MFI-Zugangsschlüssel werden nach der Registrierung von Hand freigeschaltet. Frisch erstellte OpenWeather-Schlüssel brauchen erfahrungsgemäß einige Stunden, bis sie funktionieren. Beides erledigst du am besten, bevor du mit der Installation beginnst.
Hochladen und Assistent durchlaufen
Es gibt zwei Wege, an die Dateien zu kommen. Variante B ist der einfachere und kommt ohne Kommandozeile aus – wähle diese, wenn dir Git nichts sagt.
Variante A – mit Git
Für alle, die einen Shell-Zugang haben und später bequem aktualisieren möchten.
git clone https://github.com/CSWebations/mfi-example-page.git cd mfi-example-page
Anschließend das Verzeichnis auf den Server bringen oder direkt dort klonen. Aktualisiert
wird später mit git pull;
eigene Inhalte bleiben dabei unangetastet.
Variante B – Download und FTP
- 1. Auf der Projektseite auf die grüne Schaltfläche Code klicken und Download ZIP wählen. Eine bestimmte Fassung findest du unter Releases.
- 2. Das Archiv auf dem eigenen Rechner entpacken.
- 3. Den Inhalt des entpackten Ordners per FTP auf den Server laden – nicht den Ordner selbst.
-
4. Dem Verzeichnis
var/Schreibrechte geben (in den meisten FTP-Programmen per Rechtsklick, Wert0775). Dort legt die Vorlage ihre Protokoll- und Sperrdateien ab.
Wohin genau? Der Ordner
public/
enthält alles, was Besucher sehen dürfen, und sollte deshalb dein öffentliches
Webverzeichnis sein. Die übrigen Ordner liegen eine Ebene darüber und sind so aus dem
Internet gar nicht erst erreichbar. Lässt sich das bei deinem Hoster nicht einstellen,
gibt es einen dokumentierten Weg drumherum – siehe die Frage dazu im
FAQ weiter unten.
Danach: der Einrichtungsassistent
Rufe deine Domain im Browser auf. Solange noch keine Konfiguration vorhanden ist, landest du automatisch beim Assistenten. Er prüft jede Eingabe sofort mit einer echten Verbindung – du erfährst also direkt, ob ein Passwort oder ein Schlüssel stimmt.
| Schritt | Inhalt |
|---|---|
| 1 – System | PHP-Version, Erweiterungen und Schreibrechte werden geprüft |
| 2 – Datenbank | Zugangsdaten werden sofort ausprobiert, nicht nur auf Vollständigkeit geprüft |
| 3 – Zugänge | MFI API und OpenWeather werden mit echten Abrufen getestet |
| 4 – Website | Name, Adresse, Standort, Betriebsart und Aktualisierungsintervall |
Zum Abschluss schreibt der Assistent die Konfiguration, legt die Datenbanktabelle an, berechnet den ersten Indexwert, zeigt dir die passende Cron-Zeile mit deinem Serverpfad und löscht sich anschließend selbst – damit ihn später niemand erneut aufrufen kann.
Du bist allein am Zug: Der erste Aufruf reserviert die Einrichtung für
deinen Browser – alle anderen sehen bis zum Abschluss nur einen Hinweis. Eine Frist gibt
es nicht: Du kannst jederzeit unterbrechen, Zugangsdaten heraussuchen und später
weitermachen. Kommst du selbst nicht mehr an die begonnene Einrichtung heran, lösche
die Datei var/setup-claim.json.
Alles in einer einzigen Datei
Sämtliche Einstellungen stehen in
config.php –
außerhalb des öffentlichen Verzeichnisses, sodass niemand sie über das Internet lesen kann.
Der Assistent erzeugt die Datei; danach lässt sich jeder Wert von Hand ändern. Als
Nachschlagewerk dient die ausführlich kommentierte Vorlage
config.sample.php.
Nach der Einrichtung musst du hier normalerweise nichts anfassen.
| Block | Wichtige Schlüssel | Bedeutung |
|---|---|---|
| site | name, url, description, locale, og_image, logo, logo_dark | Name, Adresse, Logo und Angaben für Suchmaschinen |
| mfi_api | api_key, endpoint, health_endpoint, timeout_seconds | Zugang zur MFI API |
| weather | provider | Wetterquelle, ausgeliefert mit openweather |
| weather.location | name, key, latitude, longitude | Standort, für den gerechnet wird |
| weather.openweather | api_key, endpoint, timeout_seconds, max_calls_per_day | Wetterzugang und Tageslimit (Standard 200 Abrufe) |
| database | host, port, name, user, password, charset | Verbindung zur Datenbank |
| display.checks | temperature, soiltemp, rain, wind, humidity | Welche der fünf Prüfungen angezeigt werden |
| runtime | mode, update_interval_seconds, stale_after_seconds, retention_days, cron_token, timezone, debug | Betriebsart, Intervalle und Aufbewahrungsdauer |
Wichtig: Die
config.php
enthält deine Zugangsdaten im Klartext. Sie darf niemals öffentlich zugänglich sein und
gehört nicht in ein öffentliches Repository. Solange sie an ihrem vorgesehenen Platz
liegt, ist sie aus dem Internet nicht erreichbar.
Prüfungen ein- und ausblenden
Jede der fünf MFI-Einzelprüfungen lässt sich einzeln steuern:
| Wert | Wirkung |
|---|---|
| auto | nur zeigen, wenn die Prüfung ausgeführt wurde (Standard) |
| always | immer zeigen, auch als „nicht bewertet" |
| never | nie zeigen |
Mit der Voreinstellung auto
verschwindet der Bodentemperatur-Check von selbst, weil der kostenfreie OpenWeather-Zugang
keine Bodenwerte liefert.
Wie die Werte aktuell bleiben
Damit die Anzeige nicht veraltet, müssen regelmäßig neue Wetterdaten geholt und neu gerechnet werden. Dafür gibt es zwei Wege – die Wahl triffst du im Assistenten und kannst sie jederzeit ändern.
Zeitgesteuert im Hintergrund – empfohlen
Ein Cronjob ist eine Aufgabe, die dein Server in festen Abständen von selbst ausführt. Er aktualisiert die Daten im Hintergrund, die Website liest nur noch aus der Datenbank. Seitenaufrufe bleiben dadurch schnell und lösen keine Abfragen aus. Die passende Zeile zeigt dir der Assistent fertig an; sie wird im Kundenmenü des Hosters eingetragen.
*/15 * * * * /usr/bin/php /pfad/zum/projekt/bin/update.php --quiet
Zum Pfad des PHP-Programms
/usr/bin/php
oben ist nur der häufigste Fall. Je nach Hoster liegt das Programm woanders oder heißt
versionsbezogen, etwa
/usr/bin/php8.3.
Der Assistent ermittelt den Pfad und zeigt die fertige Zeile an; nachträglich nennt sie
auch php bin/check-setup.php.
Meldet der Cronjob „no such file or directory", stimmt der Pfad nicht. In
der Kommandozeile findet ihn
which php,
andernfalls hilft die Dokumentation des Hosters. Manche Cron-Formulare erwarten ohnehin nur
den Pfad zur Datei und wählen PHP selbst aus.
Ohne Shell-Zugang – oder wenn der Pfad Schwierigkeiten macht – übernimmt ein externer Cron-Dienst den regelmäßigen Aufruf einer geschützten Adresse deiner Website. Das funktioniert bei jedem Hoster, weil dabei keinerlei Pfadangabe nötig ist. Das Token erzeugt der Assistent; ohne Token verweigert die Adresse jeden Zugriff.
https://ihre-domain.de/cron.php?token=IHR_TOKEN
Beim Seitenaufruf
Ganz ohne Cronjob: Sind die Daten älter als das eingestellte Intervall, werden sie beim nächsten Besuch erneuert. Der Nachteil – der erste Besucher danach wartet kurz auf die beiden Abfragen. Eine Sperre verhindert, dass gleichzeitige Zugriffe mehrere Aktualisierungen gleichzeitig auslösen.
Befehle für die Kommandozeile
Optional – nur nötig, wenn du einen Shell-Zugang hast und gezielt eingreifen möchtest.
php bin/check-setup.php # Einrichtung prüfen (mit --full inkl. Testabruf) php bin/update.php --force # sofort aktualisieren, Mindestabstand ignorieren php bin/cleanup.php # alte Datensätze entfernen
Nicht zu häufig abfragen: Die MFI API lässt pro Zugangsschlüssel standardmäßig nur alle 300 Sekunden eine Berechnung zu. Kürzere Abstände werden mit einer Fehlermeldung abgewiesen. Fünfzehn Minuten sind ein guter Ausgangswert – Einzelheiten stehen unter Regeln & Rate Limits.
Auf eine neue Fassung wechseln
Deine eigenen Inhalte liegen getrennt vom Projektcode. Ein Update ersetzt deshalb nur die mitgelieferten Dateien – deine Seiten, deine Gestaltung, deine Kopf- und Fußbereiche und deine Konfiguration bleiben unberührt. Welcher Weg passt, hängt davon ab, wie du installiert hast.
Mit Git – wenn du per git clone installiert hast
Ein Befehl im Projektverzeichnis genügt.
cd /pfad/zum/projekt git pull php bin/check-setup.php
Der abschließende Prüflauf ist optional, aber empfehlenswert: Er bestätigt, dass Umgebung, Datenbank und API weiterhin erreichbar sind, und nennt die aktuelle Cron-Zeile.
Möchtest du eine bestimmte Fassung statt des jeweils neuesten Standes, wechselst du auf deren Version:
git fetch --tags git checkout v1.1.0
Manuell – wenn du per FTP installiert hast
Ohne Shell-Zugang funktioniert das Update genauso zuverlässig, nur von Hand. Wichtig ist allein, dass du deine eigenen Verzeichnisse nicht überschreibst.
-
1. Sicherung anlegen: Lade
config.php,pages/,partials/undpublic/assets/css/user-style.cssherunter. Ein Datenbank-Export schadet ebenfalls nicht. - 2. Neue Fassung als ZIP von Releases herunterladen und entpacken.
-
3. Aus dem entpackten Ordner
nur die Verzeichnisse
src/,bin/,install/,pages-default/sowiepublic/hochladen und dabei überschreiben. -
4. Nicht hochladen:
config.php,pages/,partials/,var/undpublic/assets/css/user-style.css. Diese Verzeichnisse gehören dir. -
5. Website aufrufen und prüfen, ob
der Indexwert weiterhin angezeigt wird. Mit Shell-Zugang bestätigt
php bin/check-setup.phpdas Ergebnis genauer.
Vor jedem Update ein Blick in den Änderungsverlauf: Die
CHANGELOG.md
im Projekt nennt für jede Fassung, was neu ist, was sich geändert hat und was behoben
wurde. Hast du Kopf- oder Fußbereich durch eigene Fassungen ersetzt, lohnt anschließend
zusätzlich ein Blick in
src/templates/partials/:
Deine Fassungen bekommen dortige Verbesserungen nicht automatisch mit.
Eigene Inhalte, eigenes Aussehen
Die Vorlage ist zum Umbauen gedacht. Die folgenden Abschnitte setzen etwas PHP-Verständnis voraus – für den reinen Betrieb sind sie nicht nötig.
Den MFI frei platzieren
Die Ausgabe besteht aus drei Bausteinen, die auf jeder eigenen Seite zur Verfügung stehen. Die Reihenfolge ist frei wählbar, einzelne Bausteine dürfen entfallen, eigene Abschnitte dazwischenstehen.
<?= mfi_result() ?> // Empfehlung, Indexwert, Prüfungen, Angaben zur Messung <?= mfi_explain() ?> // Erklärkasten „Was bedeutet das?" <?= mfi_input_table() ?> // Tabelle der an die API gesendeten Messwerte
Für eigene Logik stehen zusätzlich
mfi_has_result() und
mfi_data() bereit.
Letzteres liefert unter anderem score(),
mainStatus(),
dataQuality(),
season() und
checks().
<?php if (mfi_has_result()): ?> <p>Aktueller Wert: <?= mfi_data()->score() ?> von 100</p> <?php endif; ?>
Eigene Seiten anlegen
Eine neue Seite entsteht durch eine neue Datei im Ordner
pages/.
Der Dateiname wird zur Adresse: aus
pages/rasenpflege.php
wird /rasenpflege.
Ein kurzer Kommentarkopf steuert alles Weitere – Navigation und Sitemap ziehen automatisch nach.
<?php /** * Title: Rasenpflege im Sommer * Description: Worauf es beim Mähen an heißen Tagen ankommt. * Nav: Rasenpflege * NavOrder: 30 * Sitemap: 0.6 monthly */ ?>
Nav steuert die
Beschriftung in der Navigation – fehlt die Angabe, taucht die Seite dort nicht auf.
NavOrder sortiert
(kleiner heißt weiter vorn), Sitemap
setzt Priorität und Änderungshäufigkeit, und
Noindex nimmt die
Seite aus dem Suchmaschinenindex.
Was Updates übersteht
Alles Eigene liegt getrennt vom mitgelieferten Bestand. Eine Datei aus der rechten in die linke Spalte zu kopieren genügt, um sie zu übernehmen – ab dann gilt deine Fassung, und das Original darf sich bei Updates weiterentwickeln.
| Dein Bereich | Mitgeliefertes Gegenstück |
|---|---|
| pages/ | pages-default/ |
| partials/ | src/templates/partials/ |
| public/assets/css/user-style.css | user-style.example.css |
| config.php | config.sample.php |
Kopf- und Fußbereich ersetzen
Beide lassen sich vollständig durch eigene Fassungen ersetzen. Dazu kopierst du die
gewünschte Vorlage in das Verzeichnis
partials/ –
ab dann verwendet die Website ausschließlich deine Fassung, auch nach einer
Aktualisierung. Möglich ist das für
header.php,
footer.php und
badge.php.
cp src/templates/partials/footer.php partials/footer.php
Das ist zugleich der richtige Ort für Verweise auf Seiten, die nicht in der
Hauptnavigation auftauchen sollen – typischerweise Impressum und Datenschutzerklärung.
Solche Seiten lässt du im Kommentarkopf einfach ohne
Nav-Angabe
und verlinkst sie stattdessen von Hand im Fußbereich:
<li><a class="site-footer__link" href="/impressum">Impressum</a></li> <li><a class="site-footer__link" href="/datenschutz">Datenschutz</a></li>
Welche Hilfsmittel dir innerhalb dieser Dateien zur Verfügung stehen – etwa zum sicheren
Ausgeben von Werten, zum Einbinden von Symbolen oder zum Auslesen der Navigation – steht in
partials/LIESMICH.md.
Ein Nachteil bleibt: Deine Fassung erhält keine künftigen Verbesserungen
am mitgelieferten Kopf- oder Fußbereich mehr. Nach jeder Aktualisierung lohnt deshalb ein
Blick in
src/templates/partials/,
ob dort etwas hinzugekommen ist, das du übernehmen möchtest.
Farben, Logo und Texte
Farben und Abstände laufen über eine eigene Stylesheet-Datei, die nach dem mitgelieferten
Design geladen wird und damit jeden Konflikt gewinnt; die beiliegende Vorlage listet alle
Variablen auskommentiert auf. Ein Logo trägst du in der Konfiguration ein, bei Bedarf mit
eigener Fassung für das dunkle Design. Sämtliche sichtbaren Texte des Grundgerüsts stehen
gesammelt in src/lang/de.php.
Was deine Anpassungen betreffen
Alle Zusagen dieser Seite – Barrierefreiheit nach WCAG 2.2 AA, nachgemessene Kontraste, Bedienbarkeit ohne Maus und ohne JavaScript, keine Cookies, keine externen Ressourcen – beschreiben den Auslieferungszustand der Vorlage. Diese Zusagen gelten nicht automatisch weiter, sobald du selbst eingreifst:
- Eigene Farben heben die geprüften Kontraste auf. Miss nach, wenn du Werte ersetzt: mindestens 4,5:1 für Text, 3:1 für grafische Elemente und Bedienelemente – und zwar in beiden Designs, hell und dunkel.
- Eigene Seiten und Inhalte bringen ihre eigene Barrierefreiheit mit. Alternativtexte für Bilder, sinnvolle Überschriftenhierarchie, beschriftete Formularfelder und erkennbarer Tastaturfokus liegen dann bei dir.
- Externe Einbindungen – Schriften von fremden Servern, Karten, Videos, Social-Media-Elemente, Analyse- oder Consent-Werkzeuge – heben die Datensparsamkeit auf. Sobald so etwas dazukommt, ändern sich auch die Anforderungen an deine Datenschutzerklärung und gegebenenfalls an eine Einwilligung.
- Eigenes JavaScript kann die Bedienbarkeit ohne Maus und die Nutzung ohne JavaScript einschränken, wenn Inhalte erst durch Skripte entstehen.
Kurz: Die Vorlage gibt dir eine saubere Ausgangslage. Verantwortlich für Barrierefreiheit und Datenschutz deiner Website bist als Betreiber du – und je nach Art deines Angebots können dafür auch gesetzliche Anforderungen gelten.
Impressum und Datenschutzerklärung musst du selbst anlegen. Beide sind für den Betrieb einer Website in aller Regel verpflichtend, hängen aber von Rechtsform, Hosting und eingesetzten Diensten ab – deshalb kann die Vorlage sie nicht mitliefern. Du legst sie wie jede andere eigene Seite an; lass die Texte im Zweifel rechtlich prüfen.
Was die Wetterquelle liefert – und was ergänzt wird
Der kostenfreie OpenWeather-Zugang liefert Temperatur, Luftfeuchtigkeit, Wind, Böen und den Niederschlag der letzten Stunde. Bodentemperatur und Bodenfeuchte fehlen. Ohne diese Werte überspringt die MFI API den Bodencheck und weist die Datenqualität als „teilweise" aus – vier der fünf Prüfungen laufen also, was für eine belastbare Einschätzung genügt.
Fehlende Langzeitwerte errechnet die Vorlage selbst aus ihren gespeicherten Läufen:
| Wert | Woher er kommt |
|---|---|
| Regenmenge der letzten 12 h, 24 h und 14 Tage | Summe stündlicher Stichproben |
| Zeit seit dem letzten Regen | Abstand zur letzten Messung mit Niederschlag |
| Tiefsttemperatur der letzten 3 h, 3 Tage und 14 Tage | niedrigster Wert im jeweiligen Zeitfenster |
Ein solcher Wert wird nur an die API gesendet, wenn das Zeitfenster zu mindestens 80 Prozent mit Messungen belegt ist. Direkt nach der Installation fehlen die längeren Zeiträume daher noch – sie kommen nach und nach dazu, sobald sich die Historie aufgebaut hat. In der Messwert-Tabelle ist jederzeit erkennbar, welcher Wert von der Quelle stammt und welcher errechnet wurde.
Welche Prüfungen mit welchen Daten laufen und wie sich die Datenlage auf den Indexwert auswirkt, beschreiben die Seiten OpenWeather-Anbindung und Gesamt-Indexwert.
Typische Meldungen und was dahintersteckt
| Meldung | Ursache und Abhilfe |
|---|---|
| „Website noch nicht eingerichtet" | Konfiguration fehlt oder ist unvollständig – Assistent unter /setup.php aufrufen |
| „Die Einrichtung läuft bereits" | Der Assistent gehört einem anderen Browser – var/setup-claim.json löschen |
| „Noch kein Mähbarkeitsindex verfügbar" | Es gab noch keinen erfolgreichen Lauf – Aktualisierung anstoßen oder auf den nächsten Cronjob warten |
| HTTP 401 | MFI-Zugangsschlüssel falsch oder nicht übernommen |
| HTTP 403 | Schlüssel noch nicht freigeschaltet oder deaktiviert; die Freischaltung erfolgt manuell |
| HTTP 422 | Pflichtangaben fehlen – die Wetterquelle liefert keine Temperatur oder keinen Niederschlag |
| HTTP 429 | Zu häufig abgefragt – Intervall erhöhen |
| HTTP 503 | Wartungsmodus der API – später erneut versuchen |
| OpenWeather 401 | Neue Schlüssel werden erst nach einigen Stunden aktiv |
Fehler erreichen den Browser nie im Klartext. Erste Anlaufstelle ist die Protokolldatei
var/error.log;
dort stehen Meldung, Datei, Zeile und Aufrufweg. Fehlgeschlagene Läufe werden zusätzlich mit
ihrer Fehlermeldung in der Datenbank festgehalten. Für die Fehlersuche lässt sich
runtime.debug
vorübergehend einschalten – im Regelbetrieb gehört der Wert auf
false, sonst
werden Serverpfade für jeden Besucher sichtbar.
Häufige Fragen
Von den Grundlagen bis zu den technischen Feinheiten.
Eine vollständige, lauffähige Website. Sie holt selbstständig Wetterdaten, lässt daraus den Mähbarkeitsindex berechnen und zeigt das Ergebnis an – mit Empfehlung im Klartext, Indexwert und den Begründungen der einzelnen Prüfungen. Es ist kein Baukasten und kein Plugin für ein bestehendes System, sondern ein fertiger Satz Dateien, den du auf deinen eigenen Webspace legst. Wie das Ergebnis aussieht, zeigt das laufende Beispiel unter mep.maehbarkeitsindex.de.
Für die Vorlage selbst fallen keine Kosten an. Der Zugang zur MFI API ist kostenfrei, ebenso der benötigte OpenWeather-Zugang in dem hier genutzten Umfang. Bezahlen musst du nur dein eigenes Webhosting, sofern du noch keines hast.
Du solltest Dateien auf einen Webspace hochladen können und wissen, wo du im Kundenmenü deines Hosters eine Datenbank anlegst. Programmierkenntnisse sind für die Einrichtung nicht nötig – der Assistent führt durch alle Schritte und prüft jede Eingabe. Für eigene Erweiterungen sind PHP-Grundkenntnisse hilfreich.
Wenn beide Zugangsschlüssel bereits vorliegen und die Datenbank angelegt ist, sind es meist 15 bis 30 Minuten. Rechne zusätzlich Wartezeit für die Schlüssel ein: MFI-Zugangsschlüssel werden von Hand freigeschaltet, neue OpenWeather-Schlüssel brauchen einige Stunden, bis sie funktionieren.
Nötig sind PHP ab Version 8.2, eine MySQL-Datenbank ab 8.0 oder MariaDB ab 10.4 und ein Apache-Webserver. Diese Angaben stehen in der Leistungsübersicht deines Hosters. Im Zweifel lade die Dateien einfach hoch: Der erste Schritt des Einrichtungsassistenten prüft die Umgebung und sagt dir genau, was fehlt.
Ein API-Key ist ein Zugangsschlüssel – eine lange Zeichenfolge, mit der sich deine Website bei der MFI API ausweist. Du beantragst ihn kostenlos über das Registrierungsformular. Nach der Bestätigung deiner E-Mail-Adresse wird der Schlüssel von Hand freigeschaltet. Bewahre ihn wie ein Passwort auf.
Ein Cronjob ist eine zeitgesteuerte Aufgabe, die der Server regelmäßig von selbst ausführt – hier alle 15 Minuten das Abrufen neuer Wetterdaten. Bietet dein Hosting keinen Cronjob, gibt es zwei Alternativen: die Betriebsart „beim Seitenaufruf", bei der die Daten erneuert werden, sobald jemand die Seite besucht, oder ein externer Cron-Dienst, der eine tokengeschützte Adresse deiner Website aufruft.
Der DocumentRoot ist das Verzeichnis, dessen Inhalt dein Webserver nach außen sichtbar
macht. Idealerweise zeigt er auf den Ordner
public/,
damit Konfiguration und Programmcode gar nicht erst erreichbar sind. Lässt sich das bei
deinem Hoster nicht einstellen, verschiebst du den Inhalt von
public/
in dein Webverzeichnis und die übrigen Ordner eine Ebene darüber; in zwei Dateien ist
dann ein Pfad anzupassen. Die mitgelieferte Serverkonfiguration sperrt vorsorglich auch
dann den Zugriff auf Konfigurations-, Datenbank- und Protokolldateien.
Nein. Du kannst alle Dateien per FTP hochladen und die Einrichtung vollständig im Browser erledigen. Ein Shell-Zugang ist nur bequemer, wenn du das Projekt per Git aktuell halten oder die Wartungsbefehle direkt aufrufen möchtest.
Voreingestellt sind 15 Minuten. Kürzere Abstände sind nicht sinnvoll: Die MFI API lässt pro Zugangsschlüssel standardmäßig nur alle 300 Sekunden eine Berechnung zu und antwortet sonst mit einer Fehlermeldung. Zusätzlich begrenzt die Vorlage die Wetterabrufe auf 200 pro Tag, damit du nicht versehentlich in die Grenzen des kostenfreien Zugangs läufst.
Der kostenfreie OpenWeather-Zugang liefert keine Bodentemperatur und keine Bodenfeuchte. Ohne diese Werte überspringt die MFI API den Bodencheck und weist die Datenqualität als „teilweise" aus. Die Vorlage blendet den Check deshalb standardmäßig automatisch aus – das ist kein Fehler, sondern gewolltes Verhalten.
Langzeitwerte wie die Regenmenge der letzten 14 Tage berechnet die Vorlage aus ihren eigenen gespeicherten Läufen. Diese Historie muss sich erst aufbauen. Ein abgeleiteter Wert wird erst gesendet, wenn das jeweilige Zeitfenster zu mindestens 80 Prozent belegt ist – die längeren Fenster kommen also nach und nach dazu.
Ja, das ist vorgesehen, erfordert aber PHP-Kenntnisse. Die Wetterquelle steckt hinter einer klar abgegrenzten Schnittstelle: Du legst eine eigene Klasse im Ordner für Wetterquellen an und trägst sie in der Übersicht der verfügbaren Quellen ein. Mit einer eigenen Station stehen dann meist auch Bodenwerte zur Verfügung, sodass alle fünf Prüfungen laufen und die Datenqualität steigt.
Nicht ohne Anpassung. Die Vorlage ist bewusst auf einen Standort ausgelegt, damit sie übersichtlich bleibt. Die Datenbank führt allerdings bereits eine Standortkennung mit, sodass eine Erweiterung möglich ist.
Ja. Farben und Abstände änderst du über eine eigene Stylesheet-Datei, die nach dem mitgelieferten Design geladen wird; eine kommentierte Vorlage mit allen Variablen liegt bei. Ein eigenes Logo trägst du in der Konfiguration ein, alle sichtbaren Texte stehen gesammelt in einer Sprachdatei. Beachte dabei: Sobald du Farben ersetzt, gelten die nachgemessenen Kontraste nicht mehr automatisch – du musst sie dann selbst prüfen.
Nein, nicht automatisch. Alle Angaben zu WCAG 2.2 AA, Kontrasten, Bedienbarkeit ohne Maus und Verzicht auf Cookies und externe Ressourcen beschreiben den Auslieferungszustand der Vorlage. Sobald du Farben änderst, eigene Seiten und Bausteine ergänzt, Schriften von einem fremden Server einbindest oder Analyse- und Kartendienste, Videos oder Social-Media-Elemente hinzufügst, gelten sie für diese Teile nicht mehr. Die Verantwortung für Barrierefreiheit und Datenschutz deiner Website liegt bei dir als Betreiber.
Ja. Deine eigenen Seiten, dein Kopf- und Fußbereich, deine Gestaltung und deine Konfiguration liegen in Bereichen, die von der Versionsverwaltung ausgenommen sind. Die mitgelieferten Gegenstücke dürfen sich bei Updates weiterentwickeln, ohne deine Fassung zu überschreiben. Eine Ausnahme gibt es: Ersetzte Kopf- und Fußbereiche erhalten künftige Verbesserungen der Vorlagen nicht automatisch mit.
Hast du per git clone
installiert, genügen im Projektverzeichnis
git pull und
anschließend der Prüflauf
php bin/check-setup.php.
Ohne Shell-Zugang lädst du die neue Fassung als ZIP von der Releases-Seite herunter und
überträgst per FTP nur die Verzeichnisse
src,
bin,
install,
pages-default und
public.
Nicht überschreiben darfst du
config.php,
pages,
partials,
var und
public/assets/css/user-style.css –
diese Bereiche gehören dir. Ein Blick in die CHANGELOG.md vor dem Update zeigt, was sich
geändert hat. Ausführlich steht das alles im Abschnitt
Aktualisieren weiter oben.
Ja, vollständig. Du kopierst die gewünschte Vorlage aus
src/templates/partials
in das Verzeichnis
partials
und bearbeitest sie dort; ab dann verwendet die Website ausschließlich deine Fassung und
behält sie auch nach einer Aktualisierung. Möglich ist das für
header.php,
footer.php und
badge.php.
Das ist zugleich der Ort für Links auf Seiten, die nicht in der Hauptnavigation
erscheinen sollen, etwa Impressum und Datenschutzerklärung. Welche Hilfsmittel darin
bereitstehen, beschreibt
partials/LIESMICH.md.
In aller Regel ja – beides ist für den Betrieb einer Website meist verpflichtend. Die Vorlage liefert die Texte bewusst nicht mit, weil sie von Rechtsform, Hosting und eingesetzten Diensten abhängen. Du legst die Seiten wie jede andere eigene Seite an und lässt die Texte im Zweifel rechtlich prüfen.
Im Auslieferungszustand nicht. Es gibt kein Tracking, keine externen Schriftarten und keine eingebundenen Fremdinhalte – alle Dateien liegen auf deinem Server. Ein einziges technisches Cookie wird während der Einrichtung gesetzt, um den Assistenten vor fremdem Zugriff zu schützen. Deine Website selbst ruft im Hintergrund OpenWeather und die MFI API auf; für deine eigene Datenschutzerklärung ist das relevant. Ergänzt du später eigene Dienste, ändert sich diese Einschätzung entsprechend.
Ja. Es gelten die Nutzungsbedingungen der MFI API; unter anderem ist die Quelle anzugeben. Das mitgelieferte Badge im Fußbereich der Vorlage erfüllt diese Anforderung bereits, weitere Varianten stehen im Styleguide bereit.
Erste Anlaufstelle ist das mitgelieferte Diagnosewerkzeug, das Umgebung, Datenbank, Erreichbarkeit der API und Schreibrechte in einem Durchlauf prüft und Probleme konkret benennt. Bleibt eine Frage offen, helfen die Diskussionen und der Issue-Tracker des Projekts weiter. Fragen zur API selbst beantwortet die API-FAQ.
Die Vorlage im Einsatz – oder daran gescheitert?
Ob Einrichtungsassistent, Konfiguration und Aktualisierung wirklich so glatt laufen wie beschrieben, sehe ich nur an Rückmeldungen aus echten Installationen. Ein paar kurze Fragen, anonym, ohne Anmeldung und in etwa einer Minute erledigt.
Loslegen
Zugangsschlüssel beantragen, Vorlage herunterladen, Assistent durchlaufen – mehr braucht es nicht für eine eigene Seite mit dem Mähbarkeitsindex. Ein laufendes Beispiel steht unter mep.maehbarkeitsindex.de.