Die lang erwartete TYPO3 Extension „commerce“ steht kurz vor der Veröffentlichung: commerce
Es ist dabei gelungen, ein
flexibles, voll in das TYPO3 Framework integriertes System zu
schaffen, welches sich an vorhandene Abläufe und Systeme anpassen
lässt.Die Herausforderung für das Team lag hierbei darin, die Anforderungen an ein komplexes
Shop-System mit dem TYPO3-Framework abzubilden. Hierzu gehörten
insbesondere die Nutzung der vorhandenen Mechanismen für Nutzerberechtigung, Lokalisierung und der Standardmethoden aus dem
TYPO3-Framework. Dennoch konnten nicht alle benötigten Funktionen
mit TYPO3-Bordmitteln umgesetzt werden, sodass zur Lösung einiger Detail-Anforderungen neue Module erfunden werden mussten.
Darstellung der Produkte im eigenen Kategoriebaum
Produkte werden in„commerce“ in einem eigenen Baum abgelegt.
Hierdurch ist eine klare Trennung von Inhalten und Waren allein
über das verwendete Modul gewährleistet und für Redakteure deutlich.
Einzelne Produktbäume werden dann durch das Einfügen über ein Plugin in
die vorhandene TYPO3-Installation integriert.
Für den Aufbau des eigenen Baumes ist in diesem Fall die „graytree-Lib“ entwickelt
worden, die von Franz Holzinger gepflegt wird und schon jetzt im
TYPO3-Extension-Repository verfügbar ist. Diese Bibliothek ist abstrakt gehalten, sodass sie auch in anderen Extensions genutzt werden kann. Im Gegensatz zum
normalen TYPO3-Seitenbaum kann diese Extension auch
Referenzen innerhalb des Baumes verarbeiten.
Erweiterte Darstellung von m:m Relationen
In„commerce“ können zu Produkten verschiedene Attribute
gepflegt werden, die zum Beispiel Eigenschaften wie Maße oder das
Gewicht eines
Artikels beschreiben. Da die Zahl dieser Attribute von Produkt zu
Produkt verschieden sein kann, musste ein Weg gefunden werden, die
Darstellung im TYPO3-Backend flexibel zu gestalten. Hier kommt die von
Thomas Hempel entwickelte Extension „Dynamic Flexforms“ zum Einsatz (siehe
T3N
Magazin 02/2005, Seite 36).
Parallelle Ablage in relationalen Datenbankmodellen und XML-Datenstrukturen
TYPO3 legt komplexe Datenstrukturen in XML-Feldern ab, die dann beim
Darstellen der Inhalte wieder in eine Datenstruktur gewandelt werden.
Diese Datenstrukturen liegen dann zur Laufzeit nur in Form von
PHP-Variablen vor. Da„commerce“ die Frontend-Darstellung von
mehreren
Datensätzen abhängig macht und hier wiederum Datenstrukturen abgefragt
werden, wäre das Abfragen und Auswerten der XML-Daten sehr
zeitaufwendig und unflexibel gewesen. Stattdessen
schreibt„commerce“ die
Daten sowohl TYPO3-konform in XML-Datenstrukturen als auch in ein
relationales Datenbankmodell.
Von Anfang an wurde bei der Entwicklung auf ein klares Objekt-Modell geachtet.
Dieses stellt dank konsequenter Nutzung der objektorientierten Programmierung, eine durchdachte API
für die interne Programmierung und damit auch für Erweiterungen zur Verfügung. Zusätzlich zu der Erweiterung durch
das Ableiten von Klassen (XCLASS) sind in das System einige Hooks
integriert worden, die eine besonders leichte Anpassung der Extension
an spezielle Gegebenheiten bieten sollen.
Zahungssysteme und Preismodelle
Auch bei der Integration der Bezahlsysteme wurde auf Flexibilität
geachtet. So lassen sich beliebige interne und externe
Bezahlsysteme in „commerce“ integrieren.Beispielhaft implementiert
sind bereits eine XML-Schnittstelle für die Bezahlung per Kreditkarte
und Lastschrift bei Wirecard sowie die Bezahlung direkt auf der
Webseite von Barclaycard.
Alle Bezahlarten lassen sich über Standard TYPO3-Berechtigungen
gruppenspezifisch ein- und ausblenden, sodass zum Beispiel eine Bezahlung per
Rechnung nur für Bestandskunden möglich sein kann.
Gleiches gilt auch für die Preise. Jedem Artikel können beliebig viele
Preise zugeordnet werden. So lassen sich Sonderangebote oder
Händlerpreise individuell abbilden.
Auch spezielle Firmenangebote können auf diese Weise zum Beispiel mit Hilfe des
TYPO3-Authentication-Service abgebildet werden. Unter den bereits laufenden Seiten
wurde dies für Firmenkunden, welche über eine bestimmte IP auf die
Seite kommen bereits implementiert.
Spezielle Angebote für die Mitarbeiter verschiedener großer Unternehmen
durch Kooperationsverträge sind auf diese Weise ebenfalls einfach zu realisieren.
Ausblick
„Commerce“ ist derzeit schon in einigen Installationen im Live-Betrieb im
Einsatz, und hat bereits seinen stabilen und
unproblematischen Betrieb unter Beweis stellen können. Das Team
hat Mitte Februar mit einem „Feature Freeze“ die definitiven Funktionen
für den ersten Release festgelegt, und konzentriert sich derzeit auf
Test und Dokumentation des momentanen Funktionsumfangs. Doch die Entwicklung ist damit
noch lange nicht beendet. Viele Ideen und Konzepte sind bereits auf der
Roadmap, die es umzusetzen gilt. Hier wird noch die tatkräftige
Mithilfe von Programmierern, die einzelne Punkte umsetzen können, und
von Sponsoren gesucht, die das Projektteam bei der Entwicklung
unterstützen möchten.
Beispiel www.surf0800.de
Der Onlineshop von surf0800 ist eine der ersten Implementierungen
von„commerce“. Durch die Nähe zu den Entwicklern der Marketing
Factory
Consulting GmbH konnte hier das System schon im Beta-Stadium genutzt
und weiter entwickelt werden.
Surf0800 bietet in seinem Onlineshop Elektroartikel von Computern über
Hifi bis zu Waschmaschinen an. Zunächst ist dort mit einer angepassten
Version von tt_products gearbeitet worden, bis das Auftragsvolumen und
die Zahl der Artikel nicht mehr sinnvoll bearbeitbar waren. Besonders wichtig für den reibungslosen Übergang von „tt_products“
zu„commerce“ war, dass Produkte nicht doppelt angelegt werden sollten. In
Zusammenarbeit mit Franz Holzinger wurde
hier binnen weniger Tage ein Importer für „tt_products“ geschrieben und
anschließend im Live-Betrieb eingesetzt.
Fazit
Der Einsatz von„commerce“ bei Surf0800 läuft stabil und problemlos. Das
übersichtliche Backend führte zudem zu einer deutlichen Reduzierung des
Supports für die Redakteure, die unabhängig voneinander das System
pflegen.
Thomas Faisst, surf0800 GmbH: „Die Erweiterung„commerce“ hat
insbesondere durch die automatische Verarbeitung der Bestellung den
Zeitaufwand für die tägliche Bearbeitung deutlich gesenkt. Wir sind so
in der Lage uns wieder auf die Vermarktung unserer Produkte zu
konzentrieren.“