Erweiterung in Contao 4 mit Composer installieren

von Marco Simbürger

Da Contao 4 neu auf dem Symfony Framework basiert, hat sich auch die Art und Weise, wie man Erweiterungen installiert, verändert. In Contao 4 gibt es die Erweiterungsverwaltung (ER2) nicht mehr und es wird alles via Composer installiert. Die Installation von PHP-Paketen mittels Composer ist zum Standard vieler moderner CMS und Frameworks geworden. Was auch verständlich ist, denn Composer bietet viele nützliche Funktionen!

Um eine Contao-Erweiterung mit Composer zu installieren, muss Composer auch vorhanden sein. Dies kann schnell überprüft werden, indem man in der Konsole das Wort composer schreibt und dann Enter drückt. Erscheint eine Befehlsliste, ist Composer verfügbar, wenn nicht, muss Composer noch installiert werden.

Kein Composer? So geht's!

Falls Composer nicht installiert ist, kann das Plugin wie folgt installiert werden:

curl -sS https://getcomposer.org/installer | php

Dieses Script kopiert die composer.phar-Datei an den Ort, wo man sich in der Konsole gerade befindet. Composer gehört aber in das bin-Verzeichnis, darum wird die Datei noch verschoben und dabei gleich umbenannt (von composer.phar zu composer), damit man anschliessend das .phar beim Aufruf weglassen kann.

Wenn man lokal arbeitet (z.B. mit MAC) kann man die Datei wie folgt verschieben und umbenennen:

mv composer.phar /usr/local/bin/composer

Für Windows läuft das alles etwas anders ab. Weitere Informationen dazu gibts hier: Composer unter Windows

Wenn Composer auf dem Hosting fehlt, kann man mal mit dem Hosting-Support sprechen und fragen, ob die Composer installieren können. Grundsätzlich kann man das aber auch rasch selbst tun. Bei meinem Hoster habe ich in meinem Root-Verzeichnis einen Ordner bin angelegt und verschiebe Composer dann wie folgt:

mv composer.phar ~/bin/composer

Erweiterung mit Composer installieren

Composer läuft und nun kann die Erweiterung installiert werden. Dazu ins Root-Verzeichnis der Contao-Installation wechseln. Anschliessend folgenden Befehl in der Konsole eingeben und Enter drücken. (hier am Beispiel mit dem contao-twitter Modul)

composer require terminal42/contao-twitter

Danach ist das Modul installiert. Nur, was ist passiert? Composer hat sich das Paket contao-twitter geholt und die Dateien an den entsprechenden Ort gespeichert. Zudem hat Composer das Paket auf Abhängigkeiten überprüft. Ggf. wären diese Module gleich auch mitinstalliert worden, praktisch, nicht?!

Die Dateien der Erweiterung werden in den Ordner /vendor geladen. Zusätzlich ist die Erweiterung aber auch im bekannten Contao-Ordner /system/modules vorhanden. Dort jedoch nur als Symlink, welcher auf den richtigen Ordner im Ordner /vendor zeigt.

Modul in AppKernel.php registrieren

Als nächstes muss das Modul noch registriert werden, damit Contao bzw. Symfony weiss, dass diese Erweiterung geladen werden soll. Hierzu öffnet man die Datei /app/AppKernel.php.

So, nur woher weiss ich jetzt, was ich hier eintragen soll? Das ist eine gute Frage! Grundsätzlich muss die Erweiterung als Symfony-Bundle vorliegen, damit es von Symfony korrekt geladen werden kann. Manchmal gibt es bereits eine Anleitungen, wie man das machen muss (z.B. bei diesem contao-twitter Modul). Ich persönlich öffne gerne einfach kurz die Modulseite auf Github und suche im Repository nach dem Wort «Bundle». Wenn die Erweiterung in einem Bundle vorliegt, erscheint eine solche Bundle.php-Datei wie diese:

<?php

namespace Terminal42\TwitterBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class Terminal42TwitterBundle extends Bundle
{
}

Dank dem Namespace und dem Klassen-Namen weiss ich jetzt, wie ich das Modul in AppKernel.php registrieren muss:

new Terminal42\TwitterBundle\Terminal42TwitterBundle(),

Falls das Modul nicht als Bundle vorliegt, muss das Modul anders registriert werden. Wie man das macht, wird hier erklärt: Contao 3 Erweiterung in Contao 4 installieren

Cache leeren und Datenbank aktualisieren

Das Modul ist installiert und registriert. Als nächstes sollte man im Backend bei Systemwartung den Cache «Interner Cache leeren» leeren. Anschliessend das Install-Tool öffnen und dort die Datenbank aktualisieren.

Fertig!

Die Erweiterung ist jetzt komplett installiert und einsatzfähig!
Sollte die Erweiterung noch nicht erscheinen oder Fehler bringen, kurz via die Konsole noch den Cache löschen:

app/console cache:clear -e prod

 

Viel Spass mit Contao 4 und Composer! :-)

 

PS: Die Erweiterung muss wieder weg? So deinstalliert man eine Erweiterung mit Composer

 

Zurück

Kommentare

Einen Kommentar schreiben

Bitte addieren Sie 6 und 6.