Die in diesem Artikel beschriebene „commerce“-Extension wurde maßgeblich durch die Teams der Firmen e-netconsulting, n@work (Hamburg) und Marketing Factory (Düsseldorf) konzipiert und entwickelt.
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.













