O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Magento: Das Handbuch für Entwickler

Book Description

Magento-Expertenwissen aus allererster Hand: In diesem umfassenden Handbuch zur Magento-Entwicklung erfahren Programmierer detailliert, wie sie ihr Shopsystem erweitern und anpassen können. Vermittelt werden Grundlagen, Techniken und Praxistipps von einem Autorenteam, das bereits umfangreiche Projekterfahrung mit Magento im Enterprise-Segment gesammelt hat und das System in- und auswendig kennt. Erstmals wird die bisher weitestgehend undokumentierte Architektur von Magento systematisch erläutert. Darüber hinaus erfahren Entwickler ganz konkret alles über die Extensionentwicklung, verständlich erklärt anhand von Rezepten aus der Praxis. Hinweise zur Performance-Steigerung und zum effektiven Deployment runden das Buch ab. Programmierer können also aufatmen: Endlich wird ihnen ein fundierter Blick unter die Haube von Magento ermöglicht.

Table of Contents

  1. Magento: Das Handbuch für Entwickler
  2. Einführung
    1. An wen sich dieses Buch richtet
    2. Aufbau dieses Buchs
    3. Typografische Konventionen
    4. Codebeispiele
    5. Website zum Buch
    6. Wichtige Vorbereitungen treffen
      1. Das Testsystem installieren
      2. Die Entwicklungsumgebung einrichten
      3. Eine Versionskontrolle nutzen
    7. Wir stellen vor: Die Community
      1. Magento Contributor Agreement
      2. Magento Community Documentation
      3. Magento Community Edition Roadmap
    8. Weitere Quellen
      1. Literatur
      2. Weblinks
    9. Danksagungen
      1. Roman
      2. Vinai
      3. Claus, Sebastian, Dimitri und Daniel
  3. 1. Der erste Eindruck
    1. Das Zend Framework
    2. Granularer Aufbau durch Module
      1. Die Modul-Programmlogik
      2. Die Modul-Gestaltung
    3. Die Verzeichnisstruktur von Magento
      1. /app/code/
        1. Code-Pools und Namespaces
      2. /app/design/
        1. Packages (Interfaces) und Themes
        2. Layouts und Templates
    4. Das MVC-Pattern
      1. M wie Model
      2. V wie View
      3. C wie Controller
        1. Router
    5. Requestzyklus
      1. Zusammenfassung
  4. 2. Eigene Extensions entwickeln
    1. Eine Extension konfigurieren
      1. Globale Konfiguration
        1. Blöcke
        2. Models
        3. Resource-Models
      2. Frontend-bezogene Konfiguration
        1. Layout
        2. Events
        3. Router
        4. Translation
        5. Admin-Panel
        6. Konfigurationsvariablen
    2. Eine Extension in Magento aktivieren
    3. Die Verzeichnisstruktur einer Extension
    4. Praxisbeispiel 1: HelloWorld
      1. Eine Extension anlegen und konfigurieren
      2. Einen neuen Controller definieren
      3. Layout
      4. Template
    5. Magento richtig erweitern
      1. Rewrites
      2. Event-Observer
      3. Replacements
    6. Praxisbeispiel 2: Eine Bestellbenachrichtigung per E-Mail verschicken
      1. Die Extension konfigurieren
      2. Den Observer anlegen
      3. Eigene Backend-Konfigurationsoptionen
      4. Installations- und Update-Skripte
    7. Praxisbeispiel 3: Die Category-Entität erweitern
      1. Eine Setup-Ressource in die config.xml eintragen
      2. Ein Installationsskript anlegen
      3. Zusammenfassung
  5. 3. Models und Resource-Models
    1. Entity-Attribute-Value (EAV)
      1. Entitäten
      2. Attribute, Attributsets und Attributtypen
      3. Attributwerte
    2. Datenbankstruktur
      1. EAV-Tabellen
      2. Tabellensets
    3. Models
      1. Abstrakte Model-Klassen und Vererbung
      2. Der Ursprung des Magento-Model-Objekts
        1. Die Magie von Varien_Object
        2. Wichtige Hilfsmethoden
      3. Die Modulfabrik von Magento
      4. Der PHP include_path
      5. Collections
        1. Sortieren
        2. Filtern
      6. Events
    4. Resource-Model
      1. Persistenz
    5. Praxisbeispiel: Eine Extension zur Verwaltung von Rezepten
      1. Router und Controller einrichten
      2. Datenbanktabellen über ein Installationsskript erstellen
      3. Das Model erstellen und einbinden
      4. Das Resource-Model erstellen und einbinden
      5. Das Model instantiieren
      6. Collection-Klasse zum Auslesen der Rezeptdaten
      7. Zusammenfassung
  6. 4. Das Magento-Frontend
    1. Themes und Packages
      1. CSS/JavaScript
    2. Seiten aufbauen mit Blöcken
      1. Inhaltsblöcke vs. Strukturblöcke
      2. Blockklassen
    3. Blöcke mit Templates formatieren
      1. Blöcke und Templates
      2. Einen neuen Block erzeugen
      3. Blockanweisungen
    4. Mit Layouts arbeiten
      1. Layoutupdates
      2. Update-Handles
      3. Actions
      4. Custom Layout Updates
    5. Praxisbeispiel: Verschiedene Layout-Updates
      1. Mini-Warenkorb verschieben
      2. Blöcke entfernen
      3. Blöcken weitere Informationen hinzufügen
      4. Ändern der Blockklasse
      5. Eigene Templates verwenden
      6. Core-Templates durch eigene ersetzen
    6. JavaScript und AJAX
      1. AJAX-Controller
      2. JS-Proxy
      3. JavaScript debuggen mit Firebug
      4. Zusammenfassung
  7. 5. Produkte und Kategorien
    1. 5.0 Einführung
    2. 5.1 Eine vertikale Tree-Navigation erstellen
      1. Problem
      2. Lösung
      3. Diskussion
    3. 5.2 Eine Standardansicht pro Kategorie setzen
      1. Problem
      2. Lösung
      3. Diskussion
    4. 5.3 Produkte per AJAX einer Vergleichsliste hinzufügen
      1. Problem
      2. Lösung
      3. Diskussion
    5. 5.4 Kundenpreise anlegen
      1. Problem
      2. Lösung
      3. Diskussion
    6. 5.5 Ein Produkt mit einem Frontend-Widget darstellen
      1. Problem
      2. Lösung
      3. Diskussion
  8. 6. Angebote und Bestellungen
    1. 6.0 Einführung
    2. 6.1 Bestelldaten anreichern
      1. Problem
      2. Lösung
      3. Diskussion
    3. 6.2 Einen zusätzlichen Status für Bestellungen hinzufügen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    4. 6.3 Einen produktspezifischen Versandaufpreis festlegen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    5. 6.4 Das Admin-Panel um eigene Konfigurationsmöglichkeiten erweitern
      1. Problem
      2. Lösung
      3. Diskussion
    6. 6.5 Nutzerrechte für neue Extensions anlegen
      1. Problem
      2. Lösung
      3. Diskussion
    7. 6.6 Gratisartikel in den Warenkorb legen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    8. 6.7 Ein Bestellkommentarfeld einfügen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
  9. 7. Systemintegration
    1. 7.0 Einführung
      1. Austausch von Daten zwischen zwei Systemen
    2. 7.1 Produktbestände mit Drittsystemen synchronisieren
      1. Problem
      2. Lösung
      3. Diskussion
    3. 7.2 Aufträge an ERP-Systeme exportieren
      1. Problem
      2. Lösung
      3. Diskussion
        1. Variante 1: Eventbasiertes Exportieren
        2. Variante 2: Hintergrundprozess
      4. Siehe auch
    4. 7.3 Highslide für Bilder und sonstige Medien nutzen
      1. Problem
      2. Lösung
      3. Diskussion
    5. 7.4 Ein Importer-Modul erstellen
      1. Problem
      2. Lösung
      3. Diskussion
    6. 7.5 Den Produktimport über ein Shell-Skript starten
      1. Problem
      2. Lösung
      3. Diskussion
    7. 7.6 Bilder Produkten hinzufügen und löschen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    8. 7.7 Eine Liste von Bestellungen via SOAP auslesen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
  10. 8. Performance und Skalierbarkeit
    1. 8.0 Einführung
      1. Performance von Magento
      2. Caching
    2. 8.1 Die Systemperformance mit Fiddler analysieren
      1. Problem
      2. Lösung
      3. Diskussion
    3. 8.2 Einfache Lasttests mit ab2
      1. Problem
      2. Lösung
      3. Diskussion
    4. 8.3 Mit Code-Profiling die Performance einzelner Funktionen messen
      1. Problem
      2. Lösung
      3. Diskussion
    5. 8.4 Clientseitiges Caching für statische Daten optimieren
      1. Problem
      2. Lösung
      3. Diskussion
    6. 8.5 Statische Daten mit dem Reverse-Proxy-Verfahren ausliefern
      1. Problem
      2. Lösung
      3. Diskussion
    7. 8.6 Statische Daten durch Pipelining schneller ausliefern
      1. Problem
      2. Lösung
      3. Diskussion
    8. 8.7 APC als Magento-Cache-Backend verwenden
      1. Problem
      2. Lösung
      3. Diskussion
    9. 8.8 Eine Memcached-Caching-Infrastruktur in Magento integrieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    10. 8.9 Seitenteile mithilfe von Block-Caching zwischenspeichern
      1. Problem
      2. Lösung
      3. Diskussion
    11. 8.10 Ganzseitiges Caching mit nginx und Memcached
      1. Problem
      2. Lösung
      3. Diskussion
  11. 9. Deployment
    1. 9.0 Einführung
    2. 9.1 Interne Versionierung und Release-Management
    3. 9.2 Deployment und der Symlink-Hack
    4. 9.3 Magento in ein Monitoring integrieren
      1. Problem
      2. Lösung
      3. Diskussion
  12. 10. Bezahlung und Versand
    1. 10.0 Einführung
    2. 10.1 Tabellarische Versandkosten um eigene Regeln erweitern
      1. Problem
      2. Lösung
      3. Diskussion
    3. 10.2 Ein Dummy-Versandmodul erstellen
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
    4. 10.3 Ein neues Bezahlmodul erstellen
      1. Problem
      2. Diskussion
      3. Siehe auch
  13. 11. Das Admin-Panel erweitern
    1. 11.0 Einführung
    2. 11.1 Eine Lieferanten-Entity erstellen
      1. Problem
      2. Lösung
      3. Diskussion
    3. 11.2 Eine Datentabelle über ein eigenes Admin-Grid bearbeiten
      1. Problem
      2. Lösung
      3. Diskussion
    4. 11.3 Ein neues Admin-Grid aufbauen und gestalten
      1. Problem
      2. Lösung
      3. Diskussion
    5. 11.4 Einen speziellen Renderer für ein Grid einbinden
      1. Problem
      2. Lösung
      3. Diskussion
    6. 11.5 Einen neuen Eintrag in der Navigation des Admin-Panels anlegen
      1. Problem
      2. Lösung
      3. Diskussion
    7. 11.6 Ein neues Produktattribut über ein Update-Skript anlegen
      1. Problem
      2. Lösung
      3. Diskussion
    8. 11.7 Ein neues E-Mail-Template im Admin-Panel erstellen und pflegen
      1. Problem
      2. Lösung
      3. Diskussion
    9. 11.8 Einen Cronjob in eine Extension integrieren
      1. Problem
      2. Lösung
      3. Diskussion
      4. Siehe auch
  14. A. Anhang
    1. Liste der Attributeigenschaften
    2. Die Magento-Payment-API
      1. Order-State und -Status
      2. Payment-Method-Modelle
      3. Anzeige der Zahlart als Option beim Checkout
      4. Methoden und Eigenschaften der Magento-Payment-API
      5. Payment-Model-Eigenschaften
        1. protected $_canAuthorize = false;
        2. protected $_ canCapture = false;
        3. protected $_ canCapturePartial = false;
        4. protected $_canRefund = false;
        5. protected $_ canRefundInvoicePartial = false;
        6. protected $_canUseCheckout = true;
        7. protected $_canUseForMultishipping = true;
        8. protected $_canUseInternal = false;
        9. protected $_canVoid = false;
        10. protected $_isGateway = false;
        11. protected $_isInitializeNeeded = true;
      6. Payment-Model-Methoden
        1. public function assignData($data)
        2. public function authorize(Varien_Object $payment, $amount)
        3. public function cancel(Varien_Object $payment) und public function void(Varien_Object $payment)
        4. public function canUseForCountry($country)
        5. public function canUseForCurrency($currencyCode)
        6. public function capture(Varien_Object $payment, $amount)
        7. public function getCheckoutRedirectUrl()
        8. public function getConfigPaymentAction()
        9. public function initialize($paymentAction, $stateObject)
        10. public function isInitializeNeeded()
        11. public function prepareSave()
        12. public function refund(Varien_Object $payment, $amount)
      7. Ablauf von Zahlungsvorgängen im Onepage-Checkout
        1. Zahlung via Payment-Provider-Seiten
        2. Payment im Multishipping-Checkout
        3. Abbruch der Bestellung beim Zahlungsanbieter
        4. Praktische Events während des Checkout-Vorgangs
        5. payment_method_is_active
        6. checkout_type_onepage_save_order
        7. checkout_type_onepage_save_order_after
        8. sales_convert_quote_address_to_order
        9. sales_convert_quote_item_to_order_item
        10. sales_convert_quote_to_order
        11. sales_model_service_quote_submit_after
        12. sales_model_service_quote_submit_before
        13. sales_order_payment_capture
        14. sales_order_payment_place_end (opc und msc)
        15. sales_order_payment_place_start
        16. sales_order_place_after
        17. sales_order_place_before
        18. sales_order_save_after
        19. sales_order_save_before
        20. sales_save_commit_after
  15. B. Über die Autoren
  16. Stichwortverzeichnis
  17. Kolophon