Alles rund um Magento!

Archiv zur KategorieMagento

Integration von Magento

Ein Onlineshop kommt selten allein. Deswegen muss er in aller Regel in eine Vielzahl von weiteren Systemen eingebettet werden. Es existieren allerhand Lösungen im Magento Connect, die eine Anbindung an ein bestimmtes System versprechen. Doch worauf muss bei der Integration eigentlich geachtet werden?

Zunächst mal muss spezifiziert werden, welche Systeme angebunden werden sollen und welche Informationen wie oft ausgetauscht werden müssen. Es ist davon auszugehen, dass eine vollständige Übertragung aller Produktinformationen eher selten durchgeführt werden muss; typischerweise werden die Produktinformationen einmal pro Nacht abgeglichen.
Bestellungen hingegen sollten doch häufiger ins Warenwirtschaftssystem übernommen werden, um einen Überblick über die Verfügbarkeit von Produkten für weitere Vertriebskanäle zu behalten.
Ein beispiel für eine Grobspezifikation könnte wie folgt aussehen:

  • stündlicher Export von Bestellinformationen aus Magento in die Warenwirtschaft
  • stündlicher Import von Bestellstatus-Informationen & Rechnungen aus der Warenwirtschaft in Magento
  • stündlicher Import von Lagerbestands- und Preisinformationen aus der Warenwirtschaft
  • Manueller Import von Produktinformationen aus dem Produktinformationssystem
  • Import von Kundeninformationen nach Änderungen im CRM-System (wenn dieses onSave-Trigger zulässt!)

Nachdem geklärt ist, welche Systeme beteiligt sind und welche Informationen wie oft ausgetauscht werden bzw. welche Prozesse miteinander kommunizieren müssen, ist zu prüfen, welche Kommunikationsmöglichkeiten die einzelnen Systeme anbieten (Webservices, RESTful Services, lokale Dateiablage oder Ablage via FTP, SSH, Socket-Kommunikation usw.) und welche Formate sie hierbei nutzen (meist spezifische CSV oder XML-Formate, mitunter aber auch Standards wie BMEcat).
Die meisten vorliegenden Integrationslösungen verstehen unter “Integration” eine reine Datenintegration – Austausch von Daten. Um allen Anforderungen gerecht zu werden, wird mitunter jedoch eine Geschäftsprozessintegration nötig. Als Beispiel sei der Verkauf proprietärer Software über einen Onlineshop genannt: Nach erfolgreichem Abschluss einer Bestellung muss nun der Lizenzserver kontaktiert werden, um dort einen Lizenzschlüssel zu erstellen. Nach erfolgreicher Generierung wiederum erscheint der Schlüssel im Konto des Kunden.

Doch nicht nur die Menge und Art der Systeme ist je nach Unternehmen und Onlineshop unterschiedlich, sondern meist auch die Systeme selbst. Unternehmen haben unterschiedliche Datenobjekte, die Daten der einzelnen Objekte (bspw. Produkte) werden meist um unternehmensspezifische Daten erweitert. Magento trägt dem über das EAV-Attributsystem Rechnung, doch auch die Synchronisation muss hier auf die spezifischen Eigenheiten und Anforderungen des Kunden angepasst werden können. Standardlösungen werden in aller Regel keinen vollends befriedigenden Job machen können.

Magento bietet bereits hervorragende Möglichkeiten, Kunden anzusprechen und den gesamten Onlineshop an die Besonderheiten eines Unternehmens anzupassen. Einer der momentanen Nachteile des Systems ist die unzureichende Anbindung an weitere Systeme. Dataflow reicht für erweiterte Anforderungen schlicht nicht aus, die Magento Web Services API ist in der Regel zu langsam für große Datenmengen und unterstützt keine Geschäftsprozessintegration.

Aus diesem Grund hat Flagbit eine Plattform entwickelt, die Magento um Werkzeuge einer Integration erweitert und genug Raum für spezifische Anpassungen lässt. Es ist in der Regel keine Programmierung von PHP notwendig, sondern ausschließlich Konfiguration über XML, die dem System eine Übersetzung von externen Dialekten in Magento-Sprache ermöglicht. In den kommenden Wochen werden wir die Dokumentation des Systems stark erweitern und anschließend eine Projekt-Webseite anbieten. Mehr dazu in Kürze auf diesem Kanal.

Neue Magento-Extension: FAQ

Die Flagbit-Extension-Sammlung ist wieder um eine Erweiterung reicher: Das FAQ-Modul.

Diese Erweiterung fügt dem CMS-Menü im Backend den neuen Menüpunkt FAQ hinzu. Das Modul ermöglicht das Beantworten häufiger Fragen auf der Webseite und kann so das Einkaufserlebnis (neudeutsch: shopping experience) des Kunden verbessern, da er sich gut beraten fühlt. Außerdem können sich die Supportkosten verringern, da wiederkehrende Fragen nur einmal beantwortet werden müssen. Darüberhinaus kann durch die FAQ-Einträge, da hier in der Regel automatisch wichtige Schlagwörter erwähnt werden, quasi “nebenbei” die Suchmaschinen-Indizierung für wichtige Keywords erhöht werden.

Das FAQ-Modul untersützt die HTML-Formatierung in den Einträgen und greift dabei auf den neuen grafischen Editor zurück. Außerdem kann für jeden Eintrag die StoreView-Sichtbarkeit eingestellt werden und jeder Eintrag einzeln aktiviert oder deaktiviert werden.

Neue TypoGento Version verfügbar!

Wir freuen uns heute nach langer Durststrecke wieder einmal eine TypoGento-Version veröffentlichen zu können. Die neue Version trägt die Version 1.0.0 und funktioniert nun endlich mit Version 1.4.1 von Magento.

Neben der eigentlichen Kompatibilität wurde außerdem Funktionalität für Single-Sign-On hinzugefügt. So werden Backend-User von TYPO3 mit denen von Magento kombiniert und synchronisiert wie auch die FE-User im Frontend von TYPO3 mit den Kunden in Magento verbunden werden können.

Wir wünschen viel Spaß mit der neuen Version und freuen uns auf Euer Feedback.

Artikel über TypoGento im Internet Magazin & TypoGento-Schulungen

Durch Zufall wurde mir gestern das Internet Magazin gereicht mit dem Hinweis auf einen Artikel namens “Liebeshochzeit?”. Nach dem genaueren Hinsehen wurde klar, worum es eigentlich ging: “Typogento – Magento und TYPO3 miteinander verheiraten”. Die beiden Autoren, Thomas Krähe und Tobias Hauser, schaffen es in der schier unglaublichen Kürze von vier DIN A4-Heftseiten eine komplette Beschreibung des Ablaufs von Installation und Konfiguration von Magento, TYPO3 und TypoGento zu beschreiben, der zum einen recht vollständig ist und zum anderen noch nachvollziehbar bleibt. Hut ab!

Der Artikel ist verblüffend positiv eingestellt, wenn  man bedenkt, dass wir TypoGento wegen anderen Projekten in den vergangenen Monaten recht stiefmütterlich behandeln mussten. Das Fazit lautet (in Ausschnitten):

“Typogento bietet eine hochwertige Integration von Content-Management-System und Online Shop. Es ist ein Leichtes, Daten zwischen den Systemen auszutauschen und Besucher Ihrer Site merken nicht einmal, dass es sich um zwei Systeme handelt. [...] Wenn alles läuft, dann bietet Typogento eine mächtige Plattform mit zahllosen Funktionen für den professionellen Einsatz als integrierter Onlineshop und CMS.”

Vielen Dank für die Blumen! Jedem Interessenten bzw. jedem, der nach einer veritablen Anleitung zu TypoGento lechzt, sei die Ausgabe 07/10 des Internet Magazins an’s Herz gelegt.

Außerdem sind wir sehr froh, dass wir in Zusammenarbeit mit der Open Source School aus München ein kleines, aber engagiertes Schulungsprogramm starten dürfen. Wir haben bereits in den vergangenen Monaten versucht, einen Teil unserer Expertise über diesen Blog auszutauschen, aber eine Schulung mit einer kleinen Gruppe von Interessierten vor Ort, auf deren Fragen und Bedürfnisse man direkt eingehen kann, stellt noch einmal eine andere Qualität dar.

Für den Anfang haben wir drei Schulungen konzipiert:

Bei Interesse oder offenen Fragen zu den Schulungen könnt ihr euch gern auch an uns richten.

Meet Magento schon wieder vorbei

Kaum hatte sie begonnen, war sie auch schon wieder vorbei. Wie im Flug ging sie vorbei, diese dritte Meet Magento-Veranstaltung im beschaulichen Leipzig. Dabei war diesmal doch mit zwei Tagen doppelt so viel Zeit für Vorträge, Gespräche, gesponsorte Mittagessen und natürlich die obligatorischen Zigaretten zwischendurch.

Was waren die Höhepunkte?

  • Der erste Höhepunkt war irgendwie bereits am Tage vor dem eigentlichen Event. Ein guter Teil des Magento-Support-IRC-Channels traf sich in der Jazz-Kneipe Spizz, um sich beim einen oder anderen isotonischen Getränk über die neuesten Magento-Trends und -Problemchen auszutauschen. Als Gegenüber sind die Jungs (wo waren denn die IRC-Frauen eigentlich?) noch sympathischer als bereits im virtuellen Chatraum, die Gespräche nochmal effektiver. Sehr schöne, lockere Runde.
  • Natürlich Damians Solr-Vortrag. Leider habe ich davon nichts mitbekommen…
  • Vinai gehört ja irgendwie schon zum Inventar der Meet Magento. Logischerweise waren beide Vorträge (SOAP API + Layout-XML) wieder sehr voll. Das Feedback durchweg positiv.
  • Yoav’s Ausblick mit Magento Mobile. Außerdem konnte er beweisen, dass er alternativ sicher auch Comedian hätte werden können. Sein Video mit Ausblick auf Magento 2 könnte Außenseiter-Chancen auf den Oscar in der Kategorie “Kurzfilm” haben. Wir drücken die Daumen. Magento Mobile sieht auf den ersten Blick herausragend aus – dies wäre ein Feature, dass Magento einen weiteren deutlichen Schub geben könnte. Native iPhone/Android/Windows Mobile-Apps auf Knopfdruck aus dem Shop heraus – beeindruckend.
  • Die Aftershow-Party. Bei den eigentlichen Vorträgen und Gesprächen am Tag kann man sich verstellen wie man will – am Abend zeigt dann doch jeder sein eigentliches Ich. Die Party fand in den sehr coolen Katakomben der Moritzbastei statt. Sehr gutes Essen, sehr gute Bar (David konnte den Barkeeper ernsthaft überreden, das Szenegetränk Tschunk zu mixen – Rezept steht beim Link), sehr sehr coole Menschen – sowohl Entwickler als auch diese ominösen “Entscheider”. Schade nur, dass verdächtige viele Personen sehr früh das Lokal verließen.
  • Ganz ganz viele Gespräche. Mir erschien es so, als würden die Menschen auf der Meet Magento langsam aber sicher offener. In den ersten Veranstaltungen kannte man sich noch kaum, man musste sich abtasten und die eigenen Reviere abstecken. Mittlerweile trauen sich trotz weiterer Revierkämpfe auch Shop-Betreiber unter’s Volk. Die Stimmung erschien mir im allgemeinen entspannter, auch dank einer diesmal sehr sehr schönen Location.

Ich habe bestimmt einige Highlights vergessen. Ihr seid gern eingeladen, ein paar mehr in den Kommentaren zu verewigen. An dieser Stelle noch einmal ein Dankeschön an alle Organisatoren – Rico Neitzel, Netresearch, Alice Patzer sowie die ganzen unsichtbaren Helferlein im Hintergrund. Sehr schöne Veranstaltung, wir kommen gern wieder.

Blog live auf Leipzig

Im Moment läuft in Leipzig die Keynote von Roy Rubin über die Entwicklung von Magento und die kommende M-Commerce-Plattform von Magento. The North Face wird der erste Magento-Shop sein, der direkt mit iPhone-App daher kommt. Sieht schon relativ überzeugend auf. Aber da kann sich wohl jeder selbst überzeugen, die iPhone-App für “The North Face” wird heute veröffentlicht! Laut Roy Rubin folgt eine Version für das iPad und eine für die Android Plattform noch dieses Quartal.

Außerdem scheint Magento direkt aus den eigenen “Fehlern” zu lernen und hat jetzt eine zentrale Person für Dokumentation, Ausbildung und Zertifizierung – danke Cara! Wir sind gespannt, wie die Zertifizierung aussehen wird.

Heimlicher (peinlicher) Höhepunkt war das typisch amerikanische Magento-Success-Story-Video: Magento ist eigentlich vom Pol des Saturns und aus einem bisher unbekannten Material, dass ab sofort auf Position 119 des Periodensystems aufgeführt wird. Ich wusste schon immer, dass Magento irgendwie außerirdisch wirkt.

Probleme beim Mergen von CSS & JS in Magento 1.4

Mir ist es jetzt schon 2-3 mal passiert, dass nach dem Anschalten der neuen Merging Funktion für CSS und JavaScript Dateien viele Seiten nicht mehr funktionierten, weil Magento aus unerklärlichen Gründen absolute Pfade zu den CSS / JS Dateien im Quellcode angab. Nach ein wenig googlen, fand ich viele Leute, die dasselbe Problem hatten, aber eine akzeptable Lösung hatte ich nicht gefunden. Also nahm ich die Sache selber in die Hand.

Mit einem Blick in die exception.log (Aktivierbar unter System -> Konfiguration -> Entwickleroptionen -> Log Einstellung -> Aktiviert = Ja) findet man dann schon recht schnell eine Exception, die mit einer JavaScript oder CSS Datei zu tun hat. Bei mir sah das ungefähr so aus:

exception ‘Exception’ with message ‘Warning: filemtime() [function.filemtime]: stat failed for /var/www/js/calendar/lang/calendar-en.js in /var/www/app/code/core/Mage/Core/Helper/Data.php on line 631′ in /var/www/app/code/core/Mage/Core/functions.php:245

Hier will Magento mit der Methode filemtime prüfen wann die JavaScript datei calendar-en.js das letzte mal verändert wurde. Dummerweise gab es diese Datei bei mir nicht mehr und das Merging Script verabschiedete sich mit dieser Exception. Anstatt diese Datei einfach weg zu lassen, stoppt Magento den ganzen Merging Prozess und gibt einen halbfertigen Quellcode aus. Das ganze könnte man verhindern, wenn man vorher checken würde ob die Datei überhaupt existiert. Aber da ja deutlich BETA hinter diesem Feature steht, muss man mit solchen Fehlern rechnen.

Kleines Fazit:

Die Probleme beim Merging kommen meistens von fehlende CSS /JS Dateien oder keinen Schreibrechten in /media/css/ oder /media/js/. Mit einem Blick in die exception.log kann man sehr schnell die Ursache für sein Problem finden.

Produktexport mit Magento

Da der Standard-Produktexport mit Magento nicht gerade intuitiv ist, folgt hier eine Bild-Anleitung in 5 Schritten:

Anschließend kann die Datei per FTP oder ähnlichem vom Server geholt und weiterverarbeitet werden.

FeedReader und GoogleWebmasterTools Extension für Magento

Wir freuen uns zwei neue Erweiterungen für Magento veröffentlichen zu können: Ein einfacher FeedReader für RSS- und Atom-News-Feeds und eine Einbindung des Google-Webmaster-Tool-Verification-Codes als Meta-Tag.

Eigentlich erstaunlich, dass es für so ein “gewöhnliches” Feature wie das Einbinden eines News-Feeds bisher keine kostenlose Extension gab. Der FeedReader basiert auf Zend_Feed – kann also alles verarbeiten, das auch Zend_Feed kann. Die Konfiguration lässt sich derzeit nur per layout.xml erledigen, da hier die größte Flexibilität gegeben ist. Eine Anbindung als Widget wäre schön, haben wir bisher aber noch nicht realisiert – falls sich jemand berufen fühlt, freuen wir uns natürlich über entsprechende Patches :) Auf Treppenstufenmatten.com kann man den FeedReader links unten live im Einsatz sehen.

Die Google-Extension fügt eigentlich nur ein weiters Feld zur Backend-Konfiguration hinzu und gibt dieses als Meta-Tag im HTML-Head auszugeben. Sehr simpel, aber doch deutlich angenehmer und flexibler als den Code jedes Mal im Template einfügen zu müssen oder HTML-Dateien mit kryptischen Namen im Document Root herumliegen zu haben.

Patch für CustomerController / Magento 1.4.0.1

Da derzeit das Error-Handling im CustomerController des Backends kaputt. Statt der Exception-Message erscheint eine andere Exception: sehr unschön und mühsam beim Debuggen:

Item (Mage_Customer_Model_Address) with the same id "1" already exist
 
#0 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(236): Varien_Data_Collection->addItem(Object(Mage_Customer_Model_Address))
#1 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Customer/Model/Customer.php(204): Mage_Eav_Model_Entity_Collection_Abstract->addItem(Object(Mage_Customer_Model_Address))
#2 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Adminhtml/controllers/CustomerController.php(112): Mage_Customer_Model_Customer->addAddress(Object(Mage_Customer_Model_Address))
#3 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_CustomerController->editAction()
#4 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('edit')
#5 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#7 /var/www/virtual/mage/mage-df-1/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#8 /var/www/virtual/mage/mage-df-1/index.php(78): Mage::run('', 'store')
#9 {main}

Ich habe den Bug als Issue erfasst, doch es dürfte wohl etwas dauern, bis Varien das Issue bearbeitet und die nächste Version veröffentlicht. Den Patch habe ich auch dem Issue im Magento-Bugtracker angehängt aber offensichtlich können Dateien von außen nicht abgerufen werden, was sehr schade ist. Daher veröffentliche ich den Patch auch mal hier:

### Eclipse Workspace Patch 1.0
#P magento-1.4
Index: app/code/core/Mage/Adminhtml/controllers/CustomerController.php
===================================================================
--- app/code/core/Mage/Adminhtml/controllers/CustomerController.php	(revision 61891)
+++ app/code/core/Mage/Adminhtml/controllers/CustomerController.php	(working copy)
@@ -107,9 +107,12 @@
         }
         if (isset($data['address']) && is_array($data['address'])) {
             foreach ($data['address'] as $addressId => $address) {
-                $addressModel = Mage::getModel('customer/address')->setData($address)
+                if (!($addressModel = $customer->getAddressItemById($addressId))) {
+                    $addressModel = Mage::getModel('customer/address');
+                    $customer->addAddress($addressModel);
+                }
+                $addressModel->setData($address)
                     ->setId($addressId);
-                $customer->addAddress($addressModel);
             }
         }
« Vorherige Einträge