Skip to main content

Drupal Commerce - ein Erfahrungsbericht

Dass Drupal 7 mit Leichtigkeit die Anforderungen von fast jedem webbasierten Projekt, von der einfachen Präsentationsseite über komplexere Informationssysteme, bis hin zu ausgewachsenen Communities, erfüllt ist hinlänglich bekannt. Aber wie steht es mit E-Commerce Lösungen? Ist der blaue Tropfen auch für Webshops geeignet? Ein kleiner Erfahrungsbericht soll hier Klarheit schaffen.

Lange Zeit galt Übercart als Standard, wenn man auf einer Drupal Seite etwas verkaufen wollte. Alternativen waren praktisch nicht vorhanden und um ehrlich zu sein auch nicht notwendig. Die Lage änderte sich aber mit dem Release von Drupal 7, welches eine Fülle neuer und besserer Technologien wie Entities und Fields mit sich brachte. Übercart jedoch war sehr stark mit den Drupal 6 API's und Modulen wie CCK verbunden, was eine einfache Portierung erheblich erschwerte. Stattdessen wurde das Drupal Commerce Projekt ins Leben gerufen. Erklärtes Ziel war von Anfang an eine Drupal 7 basierte E-Commerce Lösung zur Verfügung zu stellen, die auch die Vorteile der neuen API's so gut wie möglich nutzen sollte. Wir hatten das Vergnügen anhand von better b. good die Probe aufs Exempel zu machen. Und das Ergebnis kann sich sehen lassen.

Fair ohne damit anzugeben

An dieser Stelle ist ein kleiner Exkurs notwendig. Bei better b. good handelt es sich um das Unternehmen der beiden bezaubernden Oberösterreicherinnen Christine Schlögl und Pamela Glück, die fest der Meinung sind, dass es jeder Frau möglich sein sollte, Alltagsmode mit reinem Gewissen aus sozial und ökologisch vertretbaren Quellen zu beziehen, ohne sich gleich mit esoterischen Farbkombinationen und "Hippie Chic" zu brandmarken. Aus den Begleitumständen ergaben sich folgende Anforderungen, denen der Webshop gerecht werden musste:

  • Ein vorerst kleiner Produktkatalog erforderte einen ungewöhnlichen Navigationsansatz ...
  • ... dafür aber einzigartige Präsentation um Philosophie und Ideologie adäquat zu transportieren.
  • Konfigurierbare Produkte mit unterschiedlichen Zusatzinformationen zu allen Permutationen.
  • Versand zu unterschiedlich gestaffelten Preisen in insgesamt 22 EU-Mitgliedsstaaten.
  • Integration zweier verschiedener externer Payment-Provider.

Benutzerführung und Design

Eine Menüführung erwies sich nicht als notwendig, von daher wurde der Ansatz verfolgt, gänzlich darauf zu verzichten und stattdessen alle Kernfunktionen direkt auf der Landingpage auf spielerische Weise integriert und mit handgezeichneten Figuren in Storytelling-Manier zum Leben erweckt. In diesem Schritt leisteten die Drupal 7 internen Ajax-Mechanismen und das Stylesheet-Framwork Compass unschätzbare Dienste.

Produkttypen

Beim ersten Kontakt mit Drupal Commerce bereitet vor allem eine Designentscheidung der Entwickler Kopfzerbrechen: Produkte sind nicht einfach nur einzelne Entities oder gar Nodes. Stattdessen wurden sie in die Produkte selbst und die sogenannten Product Displays aufgeteilt. Ein Produkt repräsentiert tatsächlich einen einzelnen physischen Artikel mit eindeutiger Artikelnummer, zum Beispiel ein weißes T-Shirt mit Rundhalsausschnitt in der größe Medium. Product Displays hingegen sind einfach Nodes mit einen Feld vom Typ Product Reference, an welches beliebig viele Produkte angehängt werden können. So können verschiedene Ausformungen eines Artikels seperat in Lager- und Buchhaltung geführt, aber für die Präsentation sehr einfach gebündelt und zum Beispiel über einen intuitiven Konfigurator zur Verfügung gestellt werden.

Sowohl Produkte als auch Displays sind fieldable Entities und können beliebig mit Feldern für Zusatzinformationen oder zum Beispiel Bilder versehen werden. Dadurch ergibt sich eine Flexibilität, die bei hochgradig spezialisierten Systemen wie Magento schmerzlich vermisst wird. Für die Funktionen zur Produktansicht- und Konfiguration auf better b. good war beispielsweise keinerlei Anpassung der Programmlogik in PHP notwendig. Sie konnten durch simple Konfiguration der vorhandenen Mechanismen bereitgestellt werden.

Erwähnenswert ist jedoch das externe Modul Commerce Bulk Product Creation, welches dabei hilft schnell und automatisiert alle Permutationen einer Produktkategorie (zum Beispiel schwarze und weiße Shirts in fünf Größen und zwei Armlängen) zu erstellen. Gleich zu wissen, dass das Modul existiert, kann sehr viel Zeit ersparen.

Versand und Steuern

Im ersten Schritt bietet das Modul Commerce Shipping vor allem die Möglichkeit, im Bezahlprozess separate Rechnungs- und Lieferadressen abzufragen. Damit ist es aber noch nicht getan. Mithilfe von Rules (welche in verschiedensten Bereichen von Commerce Verwendung finden) ist es möglich, beliebig komplexe Regeln für Versandkosten zu konfigurieren. Zwar geschieht dies rein über das Administrationsinterface, aufgrund der Komplexität der Sache an sich ist aber ein nicht unerhebliches technisches Verständnis notwendig.

Steuern funktionieren in Drupal Commerce nach dem gleichen Prinzip wie Versandkosten und lassen in Sachen Flexibilität keinerlei Wünsche offen.

Die Rechnung bitte!

Den letzten, aber vermutlich wichtigsten, Schritt stellte, die Integration der Bezahloptionen dar. Für viele der größeren Payment-Provider sind bereits Module für Drupal Commerce verfügbar. Im Falle von better b. good fiel die Wahl auf Novalnet und Sofortüberweisung.de, wo leider auf keine vorhandenen Module zurückgegriffen werden konnte. Wenn man bereits Erfahrung in Drupal Modulentwicklung mitbringt, gestaltet sich eine Eigenimplementierung glücklicherweise als denkbar einfach. Da für better b. good vorerst keine eigene PCI-Zertifizierung in Frage kam musste auf die PCI konformen Redirect-Lösungen der beiden Anbieter zurückgegriffen werden. Commerce integriert fertige Mechanismen für sowohl On-Site als auch Off-Site Bezahlprozesse, deren Anwendung stark der Forms API nachempfunden ist, mit der jeder Drupal Entwickler ohnehin ein inniges Verhältnis haben sollte. Ein guter Ausgangspunkt ist das Studium des Commerce Paypal Moduls, in dem alle Optionen sauber implementiert und gut dokumentiert ersichtlich sind.

Fazit

Insgesamt ist Drupal Commerce als Shopsystem sehr empfehlenswert. Es ist generischer, flexibler und geht stärker den Drupal Way als Übercart, was den Einstieg für Entwickler die bereits mit anderen Subsystemen von Drupal vertraut sind einfacher macht. Im Vergleich mit reinen E-Commerce Systemen wie Magento oder osCommerce ist zwar Anfangs weniger Funktionalität ersichtlich und mehr Konfiguration notwendigt, der Gewinn an Flexibilität ist aber so gewaltig, dass ein seriöser Vergleich gar nicht möglich ist.

Bei all den Vorteilen dürfen jedoch die vereinzelten Wermutstropfen nicht vergessen werden. Die Bandbreite an unterstützten Payment-Providern ist noch deutlich geringer als bei anderen Systemen, was aber zweifellos die Zeit regeln wird. Ein größeres Problem stellen das Wiederverwenden von Rechnungs- und Versandadressen sowie das reibungslose Anmelden während des Bezahlprozesses dar. Beides kritische Punkte, die die Nutzerfreundlichkeit stark heben würden. Zwar gibt es in Form von Commerce Addressbook und Commerce Checkout Login schon Bestrebungen das Problem zu beheben, Produktionsreife haben diese Module jedoch noch nicht erreicht.

Die Fortsetzung des Blogbeitrages findet ihr hier: Drupal commerce advanced

Wird nicht veröffentlicht
  • Ich kann den Erfahrungen nur zustimmen. Commerce bietet viel aber doch nicht alles. Für eine Seite mit viel Content und einem kleinen Shop ist es wunderbar. Für größere Angebote allerdings würde ich zu einer richtigen Shop Software raten. Gruß

  • .. als mobile developer sind wir gerade dazu "beauftragt" eine empfehlung für das "Beste" Shopsystem mit der besten API abzugeben (um dann etwas abzugreifen über API für eine mobile variante ...) > Könnt ihr mir da einen Tipp geben hinsichtlich richtiger Shop Software? xt? magento? ... mit welchem shop würden WIR mobile Entwickler die meiste "Freude" haben ?? thx cybergraf

  • Die große Frage ist auch: Wieviele Produkte hält Drupal Commerce aus? PrestaShop zeigt bei 1 Millionen Produkte noch Top-Leistungen in Sachen Performance. Um SEO und Multilanguage sowie Flexibilität mache ich mir bei Drupal 7 keine Sorgen. Ich komme aus dem Magento Bereich, aber Magento ist lahm, schlechte Multilanguage Supports, sterbende Community usw.

  • Die Leistung hängt in dem Fall weniger von Commerce, sondern mehr von Drupal und der zugrunde liegenden Entity API ab. Und dort gibt es eine Menge Möglichkeiten. Angefangen vom integrierten Caching von Views und Panels, bis zu alternativen Datenbanksystemen wie MongoDB.

  • Heftig, ich wusste bis dato nicht, dass es MongoDB für Drupal gibt. Wäre aber cool, wenn die Drupal Commerce richtig ausbauen. Da stecken soviel Potenziale drin, die noch nicht ausgeschöpft sind. z. B. apache solr bekommt man bei Magento eigentlich nur mit der Magento Enterprise Editon oder halt kostenpflichtige Extension, was aber ein Gefrickel ist. Ich werde mal das Kickstart nehmen und aufsetzen und mal durchtesten.

  • Commerce ist schon "richtig ausgebaut", da es voll in das Drupal-Ökosystem integriert ist. Funktionen die nicht Teil von Commerce sind gibt es meist in einer anderen Form schon als Module. Performante Suche -> Search API und Solr, Produktrating -> Fivestar ... die Kombinationen sind unerschöpflich, man muss sie sich aber erst (wie alles in Drupal) zusammenkonfigurieren. Kickstart ist aber ein guter Startpunkt, der seit erscheinen dieses Artikels um einiges ausgebaut wurde. Inzwischen gibt es schon eine 2.0 beta.

  • Hast du Drupal 7 schon mal mit MongoDB ausprobiert? Gibt es dazu irgendwo ein Tutorial?

  • Das MongoDB-Modul (http://drupal.org/project/mongodb) übernimmt da schon einiges, da man damit die große Last der Field API in MongoDB auslagern kann. Bisher hab ich damit aber ehrlich gesagt nur herumgespielt, im Produktiveinsatz haben wir die Kombination noch nirgends.

  • MongoDB brauchst bei Drupal nur für High-Traffic Seiten, wenn überhaupt. Kennst du dich mit Panels aus? Hab da mal eine Frage, da ich gerade meine Homepage mit Drupal am basteln bin.

  • Ja, mit Panels arbeite ich auch, ist hier aber ein bisschen Off-Topic. Aber du kannst mich gern per pm@zensations.at fragen.

  • Yep, mache ich nachher. Muss vorher noch ein paar Magento Jobs erledigen ^^. Man bin ich froh, wenn ich bald davon weg bin.

  • Was mich interessieren würde:

    Wie sauber lassen sich die in Deutschland notwendigen rechtlichen Gegebenheiten abbilden, insbesondere auch nach Umsetzung der "Buttonlösung" im August? Das Beispielprojekt ist ja nun aus AT.

    Und gibt es noch ein paar mehr Referenzprojekte die man sich mal anschauen könnte?

  • Der komplette Bestellprozess ist dank Rules sehr flexibel. Im Zweifelsfall lässt sich aber auch durch die Drupal Form API auch noch praktisch alles modifizieren.

    Konkret zur "Buttonlösung": Ich bin rechtlich nicht genug informiert ob das ausreicht, aber um das "next" bzw. "weiter" im letzten Schritt des Prozesses in ein "Kaufen" umzuwandeln wären 3 Zeilen PHP-Code notwendig. Alternativ ist es einfach möglich einen Zusätzlichen Schritt zu integrieren der ausschließlich aus einem "Ja, kostenpflichtig bestellen" Button besteht.

    Weitere Beispiele gibt es im Commerce Showcase (http://www.drupalcommerce.org/showcase) einige.

  • Schöner Bericht zu einer schönen Distribution.
    Nach dem der Artikel schon ein paar Monate auf den Buckel hat würde mich interessieren, ob ihr im nachhinein weitere negative Punkte gefunden habt?
    Das Wiederverwenden von Rechnungs- und Versandadressen wurde ja mittlerweile recht schön umgesetzt.

  • Nein, eher im Gegenteil. Wie schon erwähnt, die Wiederverwendung von Adressen klappt inzwischen, und der Login während des Checkouts funktioniert mit Kickstart 2.0 auch sehr flüssig.
    Wenn mich etwas stört, dann dass Kickstart 2.0 nicht früher fertig war. Das Produktmanagement mit Inline-Editing etc. ist wirklich toll gelöst, war zum damaligen Zeitpunkt leider nicht da. Die Distribution ist schnell installiert, und ich lege jedem ans Herz sie einfach auszuprobieren.

    http://drupal.org/project/commerce_kickstart

  • Hi, Ich habe mit freude diesen deutschen Artikel gelesen! Würde mich freuen wenn einige von euch in der drupal commerce community auf g+ (https://plus.google.com/communities/100456695085242824305) vorbei schauen und interessanten mit uns austauschen.
    cu