Contao Leaflet Plugin

Nachdem ich zuletzt mit meiner eigenen Web-Entwicklung zu Hugo gewechselt bin, schreibe ich hier mal wieder etwas zum Thema Contao.
Das CMS Contao ist ja schon seit der Version 3.5 das System meiner Wahl für Webseiten von Freunden und Vereinen in denen ich engagiert bin, so z.B. der TV Linkenheim - hier ist es wichtig, dass die Redakteure ein einfach zu bedienendes, logisch strukturiertes Backend vorfinden, und genau das bietet Contao (Wordpress lasse ich hier mal aussen vor, das ist ein eigenes Thema zu dem sich einiges hier im Archiv findet…).
Zuletzt hatte ich dazu Contao 4.13 verwendet, aber das nähert sich nun dem Support-Ende - das heisst es wird Zeit zum Update auf die Version 5.3.
An sich sollte das keine grosse Sache sein, aber ein paar Fallstricke gibt es dennoch:

  • statt einem einfachen Editor besser eine IDE verwenden (VS Code ist echt gut !)
  • Contao 5 verwendet nun Twig als Template Sprache (und nicht mehr den unsäglichen PHP-HTML Mischmasch)
  • Interne Stylesheets werden nicht mehr unterstützt
  • bisher verwendete Plugins müssen nun auf eine Contao 5 Version upgedatet werden, sofern vorhanden
  • Der bisher verwendete Ordner ‘DocumentRoot/web’ sollte in ‘DocumentRoot/public’ umbenannt werden
  • wie bei bisherigen Updates ändert sich die DOM Struktur teilweise (Container, Id’s, Klassen…)
  • damit muss auch eigenes CSS geprüft und ggf. angepasst werden
  • 3rd Party Themes müssen in einer Contao 5 Version vorliegen (hier habe ich bisher keinen Weg zum Update gefunden, es hilft wohl nur Neuinstallation)

Soweit, so gut (und eigentlich klar was zu tun ist), allerdings bin ich dabei auf ein Plugin gestossen das bisher nur in einer Contao 4 Version zur Verfügung stand: Jonnysp/Map .
Das ist ein nettes Plugin zur Anzeige einer Leaflet-Karte incl. Markern auf einer Webseite, das sehr einfach zu konfigurieren ist, ohne all den unnötigen Overhead den z.B. Con4gis Maps mitbringt.
Es liegt mir fern, Con4gis zu bashen, aber mich hat da immer gestört, dass man bis zur Anzeige einer einfachen Karte im Backend 4 (oder mehr ?) Seiten durchgehen und in jeder eine Menge Eingabefelder ausfüllen muss, von denen ein normaler Mensch oft nicht mal weiss was das ist .
Und, fast noch schlimmer: mit jeder neuen Version sah das alles wieder ganz anders aus .
Da kam Jonnysp/Map gerade recht. Und weil ich mir vor Kurzem ein einfaches Hugo Leaflet Plugin genauer angesehen und für gut befunden hatte, dachte ich mir, ich schaue mir das Contao Plugin mal an und versuche es auf Contao 5 zu portieren.
Also gesagt, getan, einen Fork davon angelegt und los gings.
Die ersten Schritte (composer.json anpassen für Contao 5 und PHP 8) waren schnell erledigt, doch dann ging die Fehlersuche los.
Das war natürlich klar, aber es stellte sich schnell heraus, dass ich einfach zu wenig Wissen über das Contao Framework habe, um hier schnell weiter zu kommen.
Inzwischen war auch der Maintainer des Plugins dazu gestossen und hatte seine Hilfe angeboten, was die Motivation erhöhte.
Doch auch er hatte ähnliche Probleme wie ich, und so machte ich zunächst im Contao Community Forum einen entsprechenden Thread auf.
Dort ging es dann in mehr oder weniger kleinen Schritten voran, aber die Hilfe war schnell und kompetent (sonst hätte ich sicher zwischendruch aufgegeben) und vor allem der User zoglo engagierte sich sehr, auch im Github Issue Thread und sogar mit einem eigenen Fork inklusive entscheidender Pull-Requests .
Und schlussendlich kam dann bei der ganzen Aktion ein funktionierendes Contao 5 Leaflet Plugin heraus !

Hier noch eine (unvollständige) Liste der im Lauf der Portierung gesammelten Tipps bzw. Stolperstellen:

  • Contao 5 verlangt im Gegensatz zu Contao 4 für jede Funktion bzw. Klasse aus dem Framework das passende use Contao\xyz Statement
  • manche Konstrukte aus Contao 4 funktionieren nicht mehr und müssen ersetzt oder ganz gestrichen werden
  • das wichtigste Dokument zur Portierung ist der Upgrade Guide
  • aber auch Custom Models (sofern solche verwendet werden) sollte unbedingt beachtet werden
  • nach Code Änderungen müssen immer mal wieder die diversen Caches geleert werden
  • bei Änderungen von Namespaces unbedingt auch die autoload_classmap.php erneuern: composer dump-autoload
  • der Debug-Mode sollte permanent eingeschaltet werden, siehe Debug Mode
  • PHP 8 verzeiht nicht so viele Nachlässigkeiten wie PHP 7.x - siehe hierzu auch den Migrations-Leitfaden

Weitere Hinweise von @zoglo finden sich am Ende des Community Threads

Fazit: ca. 3 Tage Arbeit reingesteckt, viel Frust, aber auch Spass gehabt und nicht zuletzt: einiges gelernt .
Ob ich da nun weitermache (z.B. andere Contao 4 Plugins auf 5 portieren oder sogar mal ein eigenes schreiben) ist noch nicht klar, wir werden sehen…

Related Articles