Ich habe mich, wie ich neulich schon geschrieben habe, in der letzten Zeit ein wenig mit pimcore auseinander gesetzt. Aber was genau ist pimcore und wofür kann man es benutzen?
The Good & the Bad
Laut Eigenaussage kann/ist pimcore folgendes:
- Web Content Management
- Digital Asset Management
- Product-Information-Management
- Integrated Multi-Channel E-Commerce-Platform
- Multi-Channel-Publishing & Web-to-Print
- Customer Experience & Engagement Management
- Marketing Campaign Management
- Targeting & Personalization
Natürlich ist da viel Marketing dabei. Primär kann man mit pimcore recht einfach und flexibel, Seiten erstellen, deren Inhaltsbasis Modularer, vernetzter Content ist. Die Einstiegshürde ist die Nutzung des Zend-Frameworks, der Rest ist im Beispielcode recht gut dargestellt und ermöglicht es auch unerfahreren PHP-Entwicklern, sich kurzfristig in die Funktionalität hineinzudenken.
Zu glauben, pimcore wäre ein fertiges CMS (im WordPress’schen Sinne), ist leicht vermessen: es gibt keine fertigen Templates, sondern ein eigenes Design. Die Templatesprache ist PHP. WordPress hat Templates ohne Ende, mit Plugins und Themes kann man sich da leicht einen funktionalen Overkill einfahren, Funktionalität für den Besucher muss man mit pimcore selbst bauen. Drupal kommt dem Denkprinzip von pimcore da schon recht nahe, aber hier legt das Neulings-CMF aus Österreich eine deutlich striktere Trennung vor: Adminbereich und Besucher-Frontend werden hier von Anfang an sauber getrennt.
Dazu kommt, dass pimcore die Schnittstellenorgel rauf und runter spielt. Die Daten der Objekte lassen sich unter anderem per XML und JSON-Schnittstellen abrufen und modifizieren. Das ist gut und praktisch, wenn man Websites und Apps aus der gleichen Datenbasis bespielen will.
The ugly
Leider gilt das nicht für die initiale Konfiguration des Systems. In den Templates fragt man Objekte und Klassen ab, die in der Datenbank und nicht auf Code-Ebene generiert werden. Die Klassendateien werden aus dem Admin-Backend gefüllt. Statische Routen werden in der Datenbank angelegt. Die Klassendefinitionen werden teils-teils abgebildet.
Aus Entwicklungssicht ist das relativ ungünstig, weil die Datenbank in der Regel nicht Teil des versionierten Codes von pimcore ist, und zentrale Dinge wie die statischen Routen, die z.b. in der $view->url()
-Funktion benötigt werden, damit nicht im Webprojekt-Code vohanden sind. Das sind Dinge, die bei WordPress mittlerweile deutlich besser funktionieren. Mit diesem etwas komischen Gefühl stehe ich glücklicherweise aber nicht alleine da, denn hier kann ein einzelnder Nutzer mit Admin-Rechten (nicht Server-Zugang) mit ein wenig Ungeschick und unwissen, die Website kaputtmachen. Vielleicht wird sich das mit kommenden Versionen noch geben.
Aber nicht nur die Routen, auch die Klassenbibliothek lässt sich nicht rein aus dem Code erzeugen, ohne Gegenstück in der Datenbank sind die Klassendateien für das Aufsetzen eines Projekts eher zwecklos. Ein Import geht, soweit ich das sehe, nur, wenn ich die Datentypen vorher im Admin-Backend aus der Klasse exportiert habe, eine Übernahme der Daten auf Codebasis geht nicht.
Fazit
Wer mit den oben angesprochenen “häßlichen” Teilen leben kann, bekommt mit Pimcore ein flexibles Werkzeug an die Hand, mit dem sich datenbasierte Websites und Apps vergleichsweise einfach und schnell umsetzen lassen.