Magento 2 Modul-Tutorial: Treuepunkte & Prämien von A bis Z | Mironsoft
Das vollständige Magento-2-Modul: Treuepunkte & Prämien von A bis Z
Ein einziges, durchgehendes Treuepunkte- und Prämienprogramm als roter Faden, um wirklich jeden Baustein eines eigenen Magento-2-Moduls zu bauen: db_schema.xml, Model/ResourceModel/Repository, eine EAV-Entity, eigene Attribute auf Produkt, Kategorie, Kunde, Firma und Bestellung, Observer und Cron, Plugins und Preferences, Controller, Widgets und Page Builder, eigene Zahlungs- und Versandarten, ein eigener Produkttyp sowie REST- und GraphQL-API - 106 Kapitel in 12 Blöcken.
Das lernst du
- Wie ein eigenes Magento-2-Modul von Grund auf entsteht: Namespace, module.xml, deklaratives Schema, Model/ResourceModel/Collection und das Repository-Pattern statt direktem Datenbankzugriff
- Wie eine eigene EAV-Entity nach dem Vorbild von catalog_product_entity aufgebaut, mit eigenen Attributen versehen und performant abgefragt wird
- Wie eigene Attribute auf Produkt, Kategorie, Kunde, Firma (B2B) und Bestellung angelegt und mit Source-Modellen, Backend-Modellen und dem richtigen Scope versehen werden
- Wie Observer, eine eigene Cron-Gruppe, Plugins und Preferences zusammenspielen - und wann welches der vier Werkzeuge das richtige ist
- Wie eigene Controller, ein eigener Router, Blocks, ViewModels, Widgets und Page Builder Content Types eine vollständige Frontend-Oberfläche ergeben
- Wie eigene Zahlungs- und Versandarten sowie ein komplett neuer Produkttyp in den Checkout und die Bestellabwicklung integriert werden
- Wie dieselbe Geschäftslogik über REST, GraphQL und Customer Section Data angeboten wird, und wie man sie mit Unit- und Integrationstests sowie PHPStan absichert
Voraussetzungen
- Solide PHP-Kenntnisse und ein Grundverständnis der Magento-2-Modulstruktur werden vorausgesetzt - das Modul-Grundgerüst selbst wird in Kapitel 2 trotzdem kurz wiederholt, bevor es an die Datenbanktabelle und den eigentlichen Code geht
Kapitel dieser Serie
- 1 Projektvorstellung: das Treuepunkte-Programm und der Architektur-Überblick über alle 32 Bereiche ~9 Min. Lesezeit
- 2 Modul-Grundgerüst: registration.php, module.xml und Namespace-Konventionen ~6 Min. Lesezeit
- 3 db_schema.xml: die Punkte-Ledger-Tabelle entwerfen ~6 Min. Lesezeit
- 4 Model, ResourceModel und Collection für den Punkte-Ledger schreiben ~7 Min. Lesezeit
- 5 Der PointsCalculator-Service: zentrale Geschäftslogik als Service Contract statt Helper ~7 Min. Lesezeit
- 6 Repository-Pattern: PointsLedgerRepositoryInterface und Implementierung ~8 Min. Lesezeit
- 7 System/Config/Setting: eine eigene Konfigurationsseite für das Treuepunkte-Programm ~7 Min. Lesezeit
- 8 Ein eigener Cache-Typ für den Prämienkatalog: etc/cache.xml und Type::TYPE_IDENTIFIER ~6 Min. Lesezeit
- 9 Console-Command: manuelle Punkte-Neuberechnung und Audit des Ledgers ~7 Min. Lesezeit
- 10 Was ist EAV? Warum eine eigene EAV-Entity für Prämien sinnvoll ist ~6 Min. Lesezeit
- 11 Die Reward-EAV-Entity-Tabellen anlegen (entity + attribute tables) ~8 Min. Lesezeit
- 12 Model/ResourceModel für eine EAV-Entity schreiben ~7 Min. Lesezeit
- 13 Eigene EAV-Attribute für Prämien definieren (Setup-Skript für Attribute) ~8 Min. Lesezeit
- 14 EAV-Attribut-Typen im Detail: varchar, int, decimal, text bei Rewards ~6 Min. Lesezeit
- 15 Die Reward-Collection mit EAV-Joins richtig filtern ~7 Min. Lesezeit
- 16 Admin-Grid für Prämien ~6 Min. Lesezeit
- 17 Validierung und Pflichtfelder bei EAV-Attributen ~6 Min. Lesezeit
- 18 EAV-Performance-Fallstricke und wie man sie vermeidet ~7 Min. Lesezeit
- 19 Product Attribute: loyalty_points_multiplier am Produkt anlegen ~7 Min. Lesezeit
- 20 Category Attribute: Bonus-Multiplikator pro Kategorie ~6 Min. Lesezeit
- 21 Customer Attribute: Punktestand und Treue-Stufe am Kunden ~8 Min. Lesezeit
- 22 Company Attribute: B2B-Sonderkonditionen (Company-Attribute-Grundlagen) ~9 Min. Lesezeit
- 23 Sales Attribute: erzielte Punkte an Order und Order Item speichern ~8 Min. Lesezeit
- 24 Attribut-Quellmodelle (Source Models) für Auswahllisten ~7 Min. Lesezeit
- 25 Attribut-Sichtbarkeit und Scope richtig konfigurieren (Website/Store/Global) ~7 Min. Lesezeit
- 26 Attribut-Backend-Modelle: automatische Berechnung beim Speichern ~7 Min. Lesezeit
- 27 Attribut-übergreifende Konsistenz: wenn Kategorie- und Produkt-Bonus kollidieren ~8 Min. Lesezeit
- 28 Zusammenfassung Attribute-Block: Checkliste für eigene Attribute ~6 Min. Lesezeit
- 29 Observer/Event-System in Magento verstehen ~6 Min. Lesezeit
- 30 AwardPointsOnOrderPlaced: Punkte bei Bestellabschluss gutschreiben ~9 Min. Lesezeit
- 31 Rückerstattungen beobachten: Punkte bei Gutschrift zurückbuchen ~8 Min. Lesezeit
- 32 Eigene Cron-Gruppe (Crongroup) definieren: crontab.xml ~7 Min. Lesezeit
- 33 Cronjob: Punkte-Ablauf und Tier-Neuberechnung ~8 Min. Lesezeit
- 34 Cronjob-Fehlerbehandlung und Logging richtig umsetzen ~7 Min. Lesezeit
- 35 Eigene Events auslösen: Custom Events für andere Module dispatchen ~7 Min. Lesezeit
- 36 Observer-Reihenfolge und Priorität steuern ~6 Min. Lesezeit
- 37 Wann Observer, wann Plugin? Eine Entscheidungshilfe ~7 Min. Lesezeit
- 38 Plugins (Interceptors) im Detail: before/after/around ~8 Min. Lesezeit
- 39 Ein Plugin auf den Checkout-Totals-Collector: Punkte-Rabatt anwenden ~9 Min. Lesezeit
- 40 Preference/Rewrite: wann eine Preference statt eines Plugins nötig ist ~7 Min. Lesezeit
- 41 Eine eigene Preference für die Punkte-Berechnung schreiben ~9 Min. Lesezeit
- 42 Preference vs. Plugin: Kompatibilitäts- und Update-Risiken abwägen ~7 Min. Lesezeit
- 43 Plugin-Reihenfolge (sortOrder) und Konflikte mit anderen Modulen ~7 Min. Lesezeit
- 44 Helper-Klassen: wann sie trotz ViewModel-Präferenz noch sinnvoll sind ~6 Min. Lesezeit
- 45 Eigene Controller-Struktur: Punkte-Historie-Seite ~7 Min. Lesezeit
- 46 Eigener Router für hübsche URLs: /treuepraemien/{slug} ~8 Min. Lesezeit
- 47 Block vs. ViewModel: wann welches genutzt wird ~6 Min. Lesezeit
- 48 ViewModel für den Punktestand auf der Kontoseite ~6 Min. Lesezeit
- 49 Prämienkatalog-Seite: Liste, Filter, Detailansicht ~9 Min. Lesezeit
- 50 Redeem-Controller: eine Prämie einlösen (POST-Action, CSRF, Validierung) ~9 Min. Lesezeit
- 51 Layout-XML für die neuen Seiten ~7 Min. Lesezeit
- 52 Kundenkonto-Menüpunkt "Meine Punkte" ergänzen ~6 Min. Lesezeit
- 53 Responsive Frontend-Templates für Punktestand und Historie ~9 Min. Lesezeit
- 54 Barrierefreiheit und Best Practices im neuen Frontend ~8 Min. Lesezeit
- 55 Widgets in Magento 2: Grundlagen und Einsatzzweck ~6 Min. Lesezeit
- 56 Ein "Meine Punkte"-Widget für CMS-Seiten bauen ~7 Min. Lesezeit
- 57 Widget-Parameter und Admin-Konfiguration (widget.xml) ~7 Min. Lesezeit
- 58 Page Builder Content Types verstehen ~5 Min. Lesezeit
- 59 Einen eigenen "Punkte-Banner" Content Type für Page Builder bauen ~9 Min. Lesezeit
- 60 Page-Builder-Vorschau (Preview-Template) korrekt implementieren ~6 Min. Lesezeit
- 61 Widget vs. Page-Builder-Content-Type: wann was einsetzen ~6 Min. Lesezeit
- 62 Eigene Zahlungsarten in Magento 2: Grundlagen und die Adapter-Facade ~7 Min. Lesezeit
- 63 Die "Punkte einlösen"-Zahlungsart: Teilzahlung ohne echtes Split-Payment ~9 Min. Lesezeit
- 64 Zahlungsart-Konfiguration und Verfügbarkeitsprüfung: canUseCheckout und isAvailable ~7 Min. Lesezeit
- 65 Zahlungsart im Checkout: die Knockout.js-Frontend-Komponente registrieren ~8 Min. Lesezeit
- 66 Eigene Versandarten in Magento 2: Grundlagen ~6 Min. Lesezeit
- 67 "Kostenloser Versand durch Punkte" als eigene Versandart ~7 Min. Lesezeit
- 68 Versandarten-Kalkulation: eigene Rate-Result-Objekte bauen ~6 Min. Lesezeit
- 69 Zahlungs- und Versandart gemeinsam im Checkout testen ~5 Min. Lesezeit
- 70 Häufige Fehler bei eigenen Zahlungs- und Versandarten ~7 Min. Lesezeit
- 71 Eigene Produkttypen in Magento 2: wann sich das lohnt ~6 Min. Lesezeit
- 72 Den "Punkte-Paket"-Produkttyp registrieren: etc/product_types.xml ~5 Min. Lesezeit
- 73 Produkttyp-Modell implementieren: Price-Model und Type-Model ~8 Min. Lesezeit
- 74 Admin-Formular-Anpassungen für den neuen Produkttyp ~7 Min. Lesezeit
- 75 Produkttyp im Frontend korrekt anzeigen und verkaufen ~6 Min. Lesezeit
- 76 Bestellabwicklung für den neuen Produkttyp anpassen ~9 Min. Lesezeit
- 77 Produkttyp-Kompatibilität mit Preisregeln und Rabatten ~6 Min. Lesezeit
- 78 Zusammenfassung: eigene Produkttypen richtig einführen ~5 Min. Lesezeit
- 79 Service Contracts als Basis für REST, SOAP und GraphQL: Api\Data\RewardInterface und RewardRepositoryInterface ~8 Min. Lesezeit
- 80 Eine eigene REST-API: webapi.xml und ACL für den Punktestand ~7 Min. Lesezeit
- 81 API-Endpunkt zum Einlösen einer Prämie ~8 Min. Lesezeit
- 82 GraphQL-Endpoint: Punktestand und Prämienkatalog abfragen ~8 Min. Lesezeit
- 83 GraphQL-Mutation: Prämie per GraphQL einlösen ~7 Min. Lesezeit
- 84 Customer Section Data: Punktestand im Mini-Cart/Checkout per AJAX ~6 Min. Lesezeit
- 85 API-Versionierung und Abwärtskompatibilität ~6 Min. Lesezeit
- 86 Rate-Limiting und Absicherung eigener Endpunkte ~7 Min. Lesezeit
- 87 API-Dokumentation: REST-Swagger und GraphQL-Schema-Introspection ~6 Min. Lesezeit
- 88 Configuration Type im Detail: eigene Config-Quellen jenseits von System/Config ~7 Min. Lesezeit
- 89 Mehrsprachigkeit: eigene i18n-CSV-Dateien richtig pflegen ~5 Min. Lesezeit
- 90 Übersetzungen für Store-Views und die Admin-Oberfläche ~5 Min. Lesezeit
- 91 Unit Tests: den PointsCalculator-Service testen ~7 Min. Lesezeit
- 92 Unit Tests: Mocking von Repositories und Services ~8 Min. Lesezeit
- 93 Integration Tests vs. Unit Tests: wann welche sinnvoll sind ~6 Min. Lesezeit
- 94 Testabdeckung sinnvoll priorisieren (keine 100-%-Dogmatik) ~6 Min. Lesezeit
- 95 Continuous Integration: Tests automatisiert laufen lassen ~7 Min. Lesezeit
- 96 PHPStan und Codequalität im eigenen Modul sicherstellen ~8 Min. Lesezeit
- 97 Alle Bereiche im Überblick: wie die 32 Bausteine zusammenspielen ~8 Min. Lesezeit
- 98 Modul-Abhängigkeiten (module.xml sequence) sauber verwalten ~6 Min. Lesezeit
- 99 Deployment-Sequenz für ein so großes Modul ~8 Min. Lesezeit
- 100 Performance-Überlegungen für das Gesamtmodul ~8 Min. Lesezeit
- 101 Sicherheitsüberlegungen: ACL, Input-Validierung, CSRF über alle Bereiche ~9 Min. Lesezeit
- 102 Erweiterbarkeit: wie andere Entwickler das Modul erweitern können ~8 Min. Lesezeit
- 103 Troubleshooting-Leitfaden für das Gesamtprojekt ~9 Min. Lesezeit
- 104 Von hier aus weiterlernen: verwandte Tutorial-Serien dieses Katalogs ~5 Min. Lesezeit
- 105 Spickzettel: alle 32 Modul-Bereiche auf einen Blick ~7 Min. Lesezeit
- 106 Abschluss und Ausblick: was ein „vollständiges“ Magento-Modul ausmacht ~7 Min. Lesezeit