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