© saicle/Shutterstock.com
Module für PHP-basierte E-Commerce-Systeme schreiben

Blick in die Ladenwerkstatt


Wer ein Onlineshopsystem durch neue Module erweitert, erwartet, dass die eigenen Funktionalitäten mit einem Softwareupdate nicht überschrieben werden. Alles andere passt heutzutage eher in ein Kuriositätenkabinett als in ein modernes Softwarekonzept. Doch welche Möglichkeiten der Modulerweiterung gibt es konkret? Ein Vergleich zwischen den quelloffenen Versionen der drei populären Shopsysteme Magento, OXID eShop und Shopware soll zeigen, wie die deren Modulsysteme im Einzelnen aufgebaut sind und mit welchen Strategien sich eigene Funktionalitäten implementieren lassen.

Bei vielen Onlineshopprojekten fängt die eigentliche Arbeit erst nach der Installation der Standardsoftware an: Ein individuelles Template soll erstellt werden. Außerdem wird eine Preisberechnung benötigt, die die Software out of the Box nicht leisten kann; es fehlt zudem eine Schnittstelle zu einem Payment-Provider. Last but not least sollen auch noch spezielle Produktdaten in einem bestimmten Format importiert werden. Magento, OXID eShop und Shopware haben jeweils eigene Strategien, damit umzugehen.

Magento

Magento hat in den letzten Jahren für Furore gesorgt. Das Multishopsystem, das auf dem Zend Framework basiert, ist in vielerlei Hinsicht komplex, was sich vor allem in seinem Modulsystem widerspiegelt. Es wurde 2008 zum ersten Mal als produktiv einsetzbare Version unter der Open Software License (OSL) veröffentlicht. Charakteristisch für Magento ist der häufige Einsatz von XML zu Konfigurations- und Definitionszwecken und das Entity-Attribute-Value-(EAV-)Datenmodell. Darüber hinaus orientiert es sich stark am MVC-Design-Pattern. In den letzten Jahren machte Magento vor allem durch seine vollständige Übernahme durch eBay von sich reden.

zenner_modulerweiterung_abb_1.tif_fmt1.jpgAbb. 1: Die Verzeichnisstruktur von Magento

Applikationsstruktur

Beginnen wir damit, uns die Strukturen der Software genauer anzusehen, die für die Modulentwicklung von Bedeutung sind. Das ist vor allem das Verzeichnis /app/code/, in dem die meisten funktionsrelevanten Dateien liegen. Darin enthalten sind die Codepools /community, /core und /local, in denen sich in den jeweiligen Namespaces die Module verbergen. Die Ladereihenfolge local – community – core bedingt gleichzeitig auch den ersten Eingriffspunkt für etwaige eigene Erweiterungen: Im Namespace /app/code/core/Mage/<Modulname> verbergen sich, gekapselt in den jeweiligen Modulordnern, die Klassen der Applikation. Wird dieser Pfad repliziert – also beispielsweise /app/code/local/Mage/<Modulname>, ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang