|
Inhalt |
5 |
|
|
Einführung |
9 |
|
|
Das Testsystem installieren |
14 |
|
|
Die Entwicklungsumgebung einrichten |
15 |
|
|
Eine Versionskontrolle nutzen |
15 |
|
|
Magento Contributor Agreement |
17 |
|
|
Magento Community Documentation |
17 |
|
|
Magento Community Edition Roadmap |
18 |
|
|
Literatur |
19 |
|
|
Weblinks |
19 |
|
|
Kapitel 1: Der erste Eindruck |
21 |
|
|
Das Zend Framework |
22 |
|
|
Granularer Aufbau durch Module |
24 |
|
|
Die Modul-Programmlogik |
25 |
|
|
Die Modul-Gestaltung |
26 |
|
|
Die Verzeichnisstruktur von Magento |
26 |
|
|
/app/code/ |
28 |
|
|
/app/design/ |
29 |
|
|
Das MVC-Pattern |
31 |
|
|
M wie Model |
31 |
|
|
V wie View |
32 |
|
|
C wie Controller |
33 |
|
|
Requestzyklus |
35 |
|
|
Zusammenfassung |
36 |
|
|
Kapitel 2: Eigene Extensions entwickeln |
37 |
|
|
Eine Extension konfigurieren |
38 |
|
|
Globale Konfiguration |
39 |
|
|
Frontend-bezogene Konfiguration |
40 |
|
|
Eine Extension in Magento aktivieren |
43 |
|
|
Die Verzeichnisstruktur einer Extension |
45 |
|
|
Praxisbeispiel 1: HelloWorld |
46 |
|
|
Eine Extension anlegen und konfigurieren |
47 |
|
|
Einen neuen Controller definieren |
47 |
|
|
Layout |
48 |
|
|
Template |
49 |
|
|
Magento richtig erweitern |
49 |
|
|
Rewrites |
50 |
|
|
Event-Observer |
53 |
|
|
Replacements |
54 |
|
|
Praxisbeispiel 2: Eine Bestellbenachrichtigung per E-Mail verschicken |
54 |
|
|
Die Extension konfigurieren |
54 |
|
|
Den Observer anlegen |
55 |
|
|
Eigene Backend-Konfigurationsoptionen |
56 |
|
|
Installations- und Update-Skripte |
59 |
|
|
Praxisbeispiel 3: Die Category-Entität erweitern |
60 |
|
|
Eine Setup-Ressource in die config.xml eintragen |
60 |
|
|
Ein Installationsskript anlegen |
61 |
|
|
Zusammenfassung |
63 |
|
|
Kapitel 3: Models und Resource-Models |
65 |
|
|
Entity-Attribute-Value (EAV) |
66 |
|
|
Entitäten |
66 |
|
|
Attribute, Attributsets und Attributtypen |
66 |
|
|
Attributwerte |
67 |
|
|
Datenbankstruktur |
69 |
|
|
EAV-Tabellen |
71 |
|
|
Tabellensets |
74 |
|
|
Models |
75 |
|
|
Abstrakte Model-Klassen und Vererbung |
75 |
|
|
Der Ursprung des Magento-Model-Objekts |
76 |
|
|
Die Modulfabrik von Magento |
78 |
|
|
Der PHP include_path |
78 |
|
|
Collections |
79 |
|
|
Events |
82 |
|
|
Resource-Model |
82 |
|
|
Persistenz |
83 |
|
|
Praxisbeispiel: Eine Extension zur Verwaltung von Rezepten |
83 |
|
|
Router und Controller einrichten |
84 |
|
|
Datenbanktabellen über ein Installationsskript erstellen |
85 |
|
|
Das Model erstellen und einbinden |
86 |
|
|
Das Resource-Model erstellen und einbinden |
87 |
|
|
Das Model instantiieren |
88 |
|
|
Collection-Klasse zum Auslesen der Rezeptdaten |
89 |
|
|
Zusammenfassung |
90 |
|
|
Kapitel 4: Das Magento-Frontend |
93 |
|
|
Themes und Packages |
94 |
|
|
CSS/JavaScript |
96 |
|
|
Seiten aufbauen mit Blöcken |
97 |
|
|
Inhaltsblöcke vs. Strukturblöcke |
98 |
|
|
Blockklassen |
100 |
|
|
Blöcke mit Templates formatieren |
101 |
|
|
Blöcke und Templates |
102 |
|
|
Einen neuen Block erzeugen |
103 |
|
|
Blockanweisungen |
103 |
|
|
Mit Layouts arbeiten |
105 |
|
|
Update-Handles |
111 |
|
|
Actions |
113 |
|
|
Custom Layout Updates |
115 |
|
|
Praxisbeispiel: Verschiedene Layout-Updates |
116 |
|
|
Mini-Warenkorb verschieben |
117 |
|
|
Blöcke entfernen |
118 |
|
|
Blöcken weitere Informationen hinzufügen |
119 |
|
|
Ändern der Blockklasse |
120 |
|
|
Eigene Templates verwenden |
121 |
|
|
Core-Templates durch eigene ersetzen |
121 |
|
|
JavaScript und AJAX |
122 |
|
|
AJAX-Controller |
125 |
|
|
JS-Proxy |
125 |
|
|
JavaScript debuggen mit Firebug |
126 |
|
|
Zusammenfassung |
128 |
|
|
Kapitel 5:Produkte und Kategorien |
129 |
|
|
5.1 Eine vertikale Tree-Navigation erstellen |
130 |
|
|
Problem |
130 |
|
|
Lösung |
130 |
|
|
Diskussion |
131 |
|
|
5.2 Eine Standardansicht pro Kategorie setzen |
133 |
|
|
Problem |
133 |
|
|
Lösung |
133 |
|
|
Diskussion |
134 |
|
|
5.3 Produkte per AJAX einer Vergleichsliste hinzufügen |
137 |
|
|
Problem |
137 |
|
|
Lösung |
137 |
|
|
Diskussion |
137 |
|
|
5.4 Kundenpreise anlegen |
143 |
|
|
Problem |
143 |
|
|
Lösung |
143 |
|
|
Diskussion |
143 |
|
|
5.5 Ein Produkt mit einem Frontend-Widget darstellen |
150 |
|
|
Problem |
150 |
|
|
Lösung |
150 |
|
|
Diskussion |
150 |
|
|
Kapitel 6: Angebote und Bestellungen |
157 |
|
|
6.0 Einführung |
157 |
|
|
6.1 Bestelldaten anreichern |
157 |
|
|
Problem |
157 |
|
|
Lösung |
157 |
|
|
Diskussion |
157 |
|
|
6.2 Einen zusätzlichen Status für Bestellungen hinzufügen |
159 |
|
|
Problem |
159 |
|
|
Lösung |
159 |
|
|
Diskussion |
159 |
|
|
Siehe auch |
164 |
|
|
6.3 Einen produktspezifischen Versandaufpreis festlegen |
164 |
|
|
Problem |
164 |
|
|
Lösung |
164 |
|
|
Diskussion |
164 |
|
|
Siehe auch |
176 |
|
|
6.4 Das Admin-Panel um eigene Konfigurationsmöglichkeiten erweitern |
176 |
|
|
Problem |
176 |
|
|
Lösung |
176 |
|
|
Diskussion |
177 |
|
|
6.5 Nutzerrechte für neue Extensions anlegen |
181 |
|
|
Problem |
181 |
|
|
Lösung |
181 |
|
|
Diskussion |
181 |
|
|
6.6 Gratisartikel in den Warenkorb legen |
183 |
|
|
Problem |
183 |
|
|
Lösung |
183 |
|
|
Diskussion |
183 |
|
|
Siehe auch |
186 |
|
|
6.7 Ein Bestellkommentarfeld einfügen |
186 |
|
|
Problem |
186 |
|
|
Lösung |
186 |
|
|
Diskussion |
186 |
|
|
Siehe auch |
190 |
|
|
Kapitel 7:Systemintegration |
191 |
|
|
7.0 Einführung |
191 |
|
|
Austausch von Daten zwischen zwei Systemen |
191 |
|
|
7.1 Produktbestände mit Drittsystemen synchronisieren |
192 |
|
|
Problem |
192 |
|
|
Lösung |
192 |
|
|
Diskussion |
192 |
|
|
7.2 Aufträge an ERP-Systeme exportieren |
193 |
|
|
Problem |
193 |
|
|
Lösung |
193 |
|
|
Diskussion |
193 |
|
|
Siehe auch |
196 |
|
|
7.3 Highslide für Bilder und sonstige Medien nutzen |
196 |
|
|
Problem |
196 |
|
|
Lösung |
197 |
|
|
Diskussion |
197 |
|
|
7.4 Ein Importer-Modul erstellen |
198 |
|
|
Problem |
198 |
|
|
Lösung |
198 |
|
|
Diskussion |
198 |
|
|
7.5 Den Produktimport über ein Shell-Skript starten |
205 |
|
|
Problem |
205 |
|
|
Lösung |
205 |
|
|
Diskussion |
205 |
|
|
7.6 Bilder Produkten hinzufügen und löschen |
206 |
|
|
Problem |
206 |
|
|
Lösung |
206 |
|
|
Diskussion |
206 |
|
|
Siehe auch |
207 |
|
|
7.7 Eine Liste von Bestellungen via SOAP auslesen |
208 |
|
|
Problem |
208 |
|
|
Lösung |
208 |
|
|
Diskussion |
208 |
|
|
Siehe auch |
210 |
|
|
Kapitel 8:Performance und Skalierbarkeit |
211 |
|
|
8.0 Einführung |
211 |
|
|
Performance von Magento |
212 |
|
|
Caching |
213 |
|
|
8.1 Die Systemperformance mit Fiddler analysieren |
214 |
|
|
Problem |
214 |
|
|
Lösung |
214 |
|
|
Diskussion |
214 |
|
|
8.2 Einfache Lasttests mit ab2 |
216 |
|
|
Problem |
216 |
|
|
Lösung |
216 |
|
|
Diskussion |
216 |
|
|
8.3 Mit Code-Profiling die Performance einzelner Funktionen messen |
217 |
|
|
Problem |
217 |
|
|
Lösung |
217 |
|
|
Diskussion |
217 |
|
|
8.4 Clientseitiges Caching für statische Daten optimieren |
218 |
|
|
Problem |
218 |
|
|
Lösung |
219 |
|
|
Diskussion |
219 |
|
|
8.5 Statische Daten mit dem Reverse-Proxy-Verfahren ausliefern |
219 |
|
|
Problem |
219 |
|
|
Lösung |
220 |
|
|
Diskussion |
220 |
|
|
8.6 Statische Daten durch Pipelining schneller ausliefern |
222 |
|
|
Problem |
222 |
|
|
Lösung |
222 |
|
|
Diskussion |
222 |
|
|
8.7 APC als Magento-Cache-Backend verwenden |
223 |
|
|
Problem |
223 |
|
|
Lösung |
223 |
|
|
Diskussion |
224 |
|
|
8.8 Eine Memcached-Caching-Infrastruktur in Magento integrieren |
224 |
|
|
Problem |
224 |
|
|
Lösung |
224 |
|
|
Diskussion |
224 |
|
|
Siehe auch |
225 |
|
|
8.9 Seitenteile mithilfe von Block-Caching zwischenspeichern |
225 |
|
|
Problem |
225 |
|
|
Lösung |
225 |
|
|
Diskussion |
226 |
|
|
8.10 Ganzseitiges Caching mit nginx und Memcached |
228 |
|
|
Problem |
228 |
|
|
Lösung |
228 |
|
|
Diskussion |
228 |
|
|
Kapitel 9:Deployment |
235 |
|
|
9.0 Einführung |
235 |
|
|
Problem |
239 |
|
|
Lösung |
239 |
|
|
Diskussion |
239 |
|
|
Kapitel 10:Bezahlung und Versand |
243 |
|
|
10.0 Einführung |
243 |
|
|
10.1 Tabellarische Versandkosten um eigene Regeln erweitern |
243 |
|
|
Problem |
243 |
|
|
Lösung |
243 |
|
|
Diskussion |
243 |
|
|
10.2 Ein Dummy-Versandmodul erstellen |
251 |
|
|
Problem |
251 |
|
|
Lösung |
251 |
|
|
Diskussion |
251 |
|
|
Siehe auch |
256 |
|
|
10.3 Ein neues Bezahlmodul erstellen |
256 |
|
|
Problem |
256 |
|
|
Diskussion |
256 |
|
|
Siehe auch |
257 |
|
|
Kapitel 11:Das Admin-Panel erweitern |
259 |
|
|
11.0 Einführung |
259 |
|
|
11.1 Eine Lieferanten-Entity erstellen |
259 |
|
|
Problem |
259 |
|
|
Lösung |
260 |
|
|
Diskussion |
260 |
|
|
11.2 Eine Datentabelle über ein eigenes Admin-Grid bearbeiten |
262 |
|
|
Problem |
262 |
|
|
Lösung |
262 |
|
|
Diskussion |
262 |
|
|
11.3 Ein neues Admin-Grid aufbauen und gestalten |
264 |
|
|
Problem |
264 |
|
|
Lösung |
264 |
|
|
Diskussion |
264 |
|
|
11.4 Einen speziellen Renderer für ein Grid einbinden |
268 |
|
|
Problem |
268 |
|
|
Lösung |
269 |
|
|
Diskussion |
269 |
|
|
11.5 Einen neuen Eintrag in der Navigation des Admin-Panels anlegen |
270 |
|
|
Problem |
270 |
|
|
Lösung |
270 |
|
|
Diskussion |
270 |
|
|
11.6 Ein neues Produktattribut über ein Update-Skript anlegen |
273 |
|
|
Problem |
273 |
|
|
Lösung |
273 |
|
|
Diskussion |
273 |
|
|
11.7 Ein neues E-Mail-Template im Admin-Panel erstellen und pflegen |
275 |
|
|
Problem |
275 |
|
|
Lösung |
275 |
|
|
Diskussion |
275 |
|
|
11.8 Einen Cronjob in eine Extension integrieren |
278 |
|
|
Problem |
278 |
|
|
Lösung |
278 |
|
|
Diskussion |
278 |
|
|
Siehe auch |
281 |
|
|
Anhang |
283 |
|
|
Liste der Attributeigenschaften |
283 |
|
|
Die Magento-Payment-API |
287 |
|
|
Order-State und -Status |
287 |
|
|
Payment-Method-Modelle |
288 |
|
|
Anzeige der Zahlart als Option beim Checkout |
289 |
|
|
Methoden und Eigenschaften der Magento-Payment-API |
289 |
|
|
Payment-Model-Eigenschaften |
290 |
|
|
Payment-Model-Methoden |
291 |
|
|
Ablauf von Zahlungsvorgängen im Onepage-Checkout |
294 |
|
|
Index |
303 |
|