Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

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