Magento 1.4 Grundlagen: Übersicht

Die Webshop-Software Magento eCommerce hat etwas mit Bayern München gemeinsam: man liebt sie oder man hasst sie, aber so richtig kalt lässt sie kaum einen, der sich näher damit beschäftigt (oder beschäftigen muss). Da wir mehrere Webshop-Projekte mit Magento betreiben dürfen, habe ich ausgiebig Erfahrung mit dem System gesammelt. Meine Meinung dazu: wie bei (fast) allen Produkten gibt es zwar gewisse Hürden zu meistern, doch insgesamt handelt es sich um einen überdurchschnittlich gut durchdachten und umgesetzten Shop.

Magento ist sehr mächtig. Daraus entsteht auch ein Großteil der Kritikpunkte. Die Vielfalt der Funktionen macht es nämlich leistungshungrig und komplex – was bedeutet, dass man einen gewissen Aufwand einkalkulieren muss, um einen anständigen Shop auf die Beine zu stellen. In der Realität kommt nämlich kaum ein Shop ohne Erweiterungen und Anpassungen aus. Und da man diese nur umsetzen kann, wenn man weiß, was wo zu tun ist, muss man sich in das System einarbeiten und dessen Grundlagen kennen lernen.

Genau das ist das Ziel meiner ersten Artikel-Serie Magento 1.4 Grundlagen„: ich möchte eine solide Basis schaffen, die Magento-Entwicklern die weitere Arbeit erleichtert. Wenn man weiß, wie der Code funktioniert, was er bereitstellt und was er nicht bereitstellt, kann man die Ärmel aufkrempeln und in den Eingeweiden des Systems wühlen, um die gewünschten Veränderungen und Verbesserungen durchzuführen.

Magento verfügt über eine große Community, die bereits über viele Themen geschrieben hat. Daher werde ich nicht bei Adam & Eva anfangen und beschreiben, wie man die Installation durchführt, wie man Kategorien und Produkte anlegt etc. Stattdessen möchte ich gleich ans Eingemachte gehen:

  • Ablauf eines Page-Requests: wir sehen uns (grob) an, welcher Code bei einem Seitenaufruf durchlaufen wird und welche Komponenten an der Verarbeitung der Abfrage beteiligt sind.
  • Basis-Klassen: es gibt in Magento einige wichtige Basis-Klassen, welche die Grundlage für weite Teile des Systems bilden. Die sollte man sich einmal näher angesehen haben, um zu wissen, womit man an den verschiedenen Stellen des Codes arbeiten kann.
  • XML-Konfigurationsdateien und Datenbankstruktur: zu guter Letzt sollte man sich auch die XML-Dateien und die Datenbankstruktur genauer ansehen. Vielleicht erübrigt sich dieser Punkt, weil die Themen in den vorherigen Postings aufgehen; lassen wir uns überraschen.

Ich beschränke mich dabei auf Magento 1.4 – neue Shops sollten nur noch mit dieser Version umgesetzt werden, da etliche Verbesserungen und Veränderungen gegenüber dem 1.3.x-Zweig eingeflossen sind. Wo es sich anbietet, werde ich auf Unterschiede zwischen den beiden Versionen eingehen.

Sind die Punkte einmal erledigt, kommen wir zu dem Teil, wo wir unser neu gewonnenes Wissen umsetzen können: die Erweiterung von Backend und Frontend, Maßnahmen zur Verbesserung der Performance, die Einbindung von externen Systemen und nützlichen Extensions, Deployment und Unit-Testing etc. etc. Ich lass‘ mich da überraschen, ob von eurer Seite Wünsche und Vorschläge kommen.

Ach übrigens: demnächst soll das Buch „Magento – Das Handbuch für Entwickler“ erscheinen (laut O’Reilly Anfang Juli, laut Amazon Anfang August). (Update 26.09.2010: ich habe eine Rezension zu dem Buch geschrieben.)  Ich bin bereits sehr gespannt darauf, da hier ebenfalls ein tiefer Einblick in Magento vermittelt werden soll. Ursprünglich hätte das Buch letztes Jahr erscheinen sollen: ich hoffe, dass es die Version 1.4 durch die Verschiebung in das Buch geschafft hat. Die sehr nette Ansprechpartnerin bei O’Reilly konnte mir das zwar nicht bestätigen, war allerdings „nur“ die Urlaubsvertretung und ging davon aus, dass 1.4 behandelt wird. Die Kapitelübersicht, die mir ebenfalls geschickt wurde, klingt auf jeden Fall vielversprechend.

So viel also dazu – nun aber auf in die Welt von Magento & co!

3 Antworten

  1. Martin sagt:

    Hallo. Ich finde den Artikel sehr spannend. Eigentlich bin ich Jurist, beschäftige mich aber hobbymäßig mit Webdesign.
    Zwar passt dies auf den ersten Blick nicht zusammen, aber ein Bekannter hat mich einmal gefragt, ob es die Möglichkeit gäbe einen vernünfigten Online-Shop zu programmieren. Er stelbst ist HOD bei wer-kennt-wen.de
    Aufgrund eigenen Interesses habe ich daher mal einige Foren durchsucht.
    Dabei wurde ich auf viele und vor allem auch kostenlose (was eigentlich mitunter eines der wichtigsten Argumente ist) CMS vorgestellt, die auch mithilfe von Modulen, Plugins oder Komponenten einen Online-Shop installieren lassen. Allerdings habe ich auch schon mit dem Zend-Framework und Dojo gearbeitet und muss sagen, dass diese fertigen CMS (bspw. Joomla oder oscommerce) eher wie kinderspielzeug wirken, wenn man einmal mit so umfangreichen MVC-Frameworks wie Zend und dem AJAX Framework Dojo gearbeitet hat.
    Interessant finde ich daher den Gedanken, einen eigenen Webshop zu haben/bauen. Eine konkrete Idee für ein Produkt habe ich zwar noch nicht, aber wenn es so weit sein sollte, wäre es doch schon direkt starten zu können!
    Weiter habe ich öfters gelesen, dass man beispielsweise das Zend Framework in z.B. Joomla integrieren kann. Da frage ich mich ob das überhaupt die richtige Bezeichnung ist, denn nach meinem Verständnis ist es doch nur möglich ein PHP-Framework in ein MVC-Framework zu integrieren, oder? Weiter frage ich mich, ob Magneto auch mit Dojo laufen würde?
    Wie sieht es mit der Datenbankstruktur aus? Das ist nämlich der Punkt an dem ich an meine Grenzen stoße. Viele neue Seiten werden mit JBOSS, Hibernate und co programmiert. Wie weit ist da Magento? Und vor allem abgesehen davon, dass es schwierig ist, im Nachhinein hibernate zwischen datenbanken und den frontend trunk zu schalten, frage ich mich ob es grundlegend möglich ist das Framework umzugestalten? Kann man auch im Nachhinein z.B die Facebook graph-api implementieren?

    MfG
    Martin

    • Hallo Martin,

      vielen Dank für das Lob und die Beteiligung. Ich möchte den Blog in den nächsten Monaten mit den entsprechenden Inhalten füllen – bisher hat es die Zeit noch nicht zugelassen.

      Ad Shop-Systeme:
      Ich habe im unteren Preis-Segment (bzw. bei kostenlosen Systemen) bis dato keine brauchbare Alternative gefunden. Erweiterungen, wie es sie z.B. für TYPO3 gibt, reichen nicht an eine vollständige Shop-Lösung heran. osCommerce ist code-technisch nicht mehr auf dem aktuellen Stand und bei anderen (PrestaShop, Zen Cart, Tomato Cart etc.) bleibt abzuwarten, wie die weitere Entwicklung aussieht. Ein Knackpunkt (und bei vielen Systemen ein Problem) ist die Anbindungsmöglichkeit an die Warenwirtschaft, gerade da könnte nachgebessert werden. Die Grund-Lizenz von Veyton ist günstig, doch die Kosten können schnell in die Höhe schießen, da die Lizenzen für Shop und Plugins pro Umgebung (Dev1, Dev2, …, Staging, Live usw.) fällig werden. Zudem sind Teile des Codes verschlüsselt, was meiner Meinung nach in gewissen Fällen das Verstehen des Codes erschweren kann. Da xt:Commerce Anfang Juli von SafeCharce übernommen wurde, kann sich bei diesem Shop aber sicher einiges ändern – man darf gespannt sein.
      Was die Code-Qualität und die Erweiterbarkeit anbelangt, zählt Magento sicher zu den besseren PHP-Projekten.

      Ad Joomla & Zend Framework:
      Richtig, man kann Komponenten von Zend Framework (ZF) in Joomla verwenden. ZF wird oft als „glue framework“ bezeichnet, sprich: es ist möglich, einzelne Funktionen und Komponenten von ZF zu verwenden, ohne dadurch andere Frameworks auszusperren. So bietet ZF eine MVC-Lösung an, die jedoch nicht eingesetzt werden muss. Stattdessen kann man z.B. nur die Module für Mails, Logging, Webservices herauspicken und mit ihnen bestimmte Funktionalitäten umsetzen. Insofern meine ich, dass man durchaus von Integration sprechen kann: Joomla als CMS verwendet eigene Klassen-Bibliotheken (= ein eigenes Framework), um Page-Requests zu verarbeiten, doch man kann mittels ZF-Klassen weitere Fähigkeiten hinzufügen.

      Ad Magento & Dojo:
      Der Einsatz von Dojo in Magento sollte problemlos möglich sein: Magento verwendet z.B. für den Checkout-Prozess Prototype / script.aculo.us, doch Dojo kann parallel dazu eingebunden werden. Wenn man Dojo über das CDN (Content Distribution Network) von Google oder AOL einbindet (siehe http://www.dojotoolkit.org/download/), dann stehen die Chancen gut, dass der Besucher die Dojo-Dateien bereits im Cache gespeichert hat und die Ladezeit nur minimal darunter leidet.

      Ad Datenbankstruktur:
      JBoss und Hibernate stammen aus der Java-Welt. Magento kommt daher mit ihnen nicht in Berührung. Zur Speicherung der Daten werden eigens entwickelte Klassen verwendet (es kommt also kein bekannter OR-Mapper wie Doctrine zum Einsatz). Um möglichst Datenbank-unabhängig zu bleiben, werkt Zend Framework unter der Haube. Dadurch soll es theoretisch möglich sein, andere von ZF unterstützte Datenbanken wie Oracle, MSSQL, PostgreSQL etc. zu einsetzen. Bisher habe ich aber von niemandem gehört, der das erfolgreich getan hat. Ich bin auch ziemlich davon überzeugt, dass die Umsetzung (inklusive Testen usw.) einen enormen Aufwand bedeutet. Magento setzt auf das EAV-Prinzip (Entity, Attribute, Value), wodurch das System sehr erweiterbar ist – dafür muss man mit Performance- und Komplexitätskompromissen leben.

      Ad Umgestaltung Framework / Facebook-Integration:
      Man kann in die Magento-Klassen wirklich sehr weit eingreifen, ohne den ursprünglichen Code anzugreifen. Es gibt verschiedene Möglichkeiten, Magento mit Facebook zu verbinden: so gibt es ein Facebook-Connect-Modul, man kann Like-Buttons einbinden, Produkte in Facebook quasi „sharen“ usw. Es spricht auch nichts dagegen, Informationen über die Graph API auszulesen und im Shop anzuzeigen (ich hoffe, ich habe die Frage richtig verstanden?).

  1. 15.02.2011

    […] This post was mentioned on Twitter by Webmaster Blog, LimeSoda. LimeSoda said: @mzeis: Magento 1.4 Grundlagen: Übersicht – http://goo.gl/tggHE #limesoda […]