Wie man das PrestaShop-Override-System nutzt, ohne den Kern zu beschädigen

Das PrestaShop-Override-System ermöglicht es Ihnen, das Kernverhalten anzupassen, ohne die Originaldateien zu verändern. Bei unachtsamer Anwendung entstehen jedoch instabile Shops, die bei Updates nicht mehr funktionieren. Dieser Leitfaden von Knowband erklärt die Funktionsweise von Overrides, wann sie sinnvoll sind und welche drei wichtigen Fallstricke jeder Entwickler kennen sollte.

Was ist das Override-System?

PrestaShop nutzt PHP-Vererbung, um Ihnen zu ermöglichen, Ihre eigene Version jeder Kernklasse einzubinden, ohne die Originale zu verändern. Jede Kernklasse trägt das Suffix „Core“, beispielsweise „ProductCore“. Wenn Sie die Datei `/override/classes/Product.php` mit einer Klasse namens „Product“ erstellen, die von „ProductCore“ erbt, lädt PrestaShop Ihre Version. Dasselbe gilt für Controller.

Überschreiben Sie nur die Methoden, die Sie ändern müssen, und kopieren Sie niemals eine ganze Klassendatei. Dadurch bleibt Ihr Code schlank und es treten deutlich seltener Konflikte mit zukünftigen Aktualisierungen auf.

Beispiel: So geben Sie den Namen des aktuellen Controllers in Ihrer Header-Vorlage an:

Wo Sie Ihre Überschreibungsdateien ablegen sollen

Überschreibungen können an zwei Orten gespeichert werden. Das globale Verzeichnis `/override/` im Stammverzeichnis Ihrer Installation ist sofort nach dem Leeren des Caches aktiv. Es empfiehlt sich jedoch, Überschreibungen in einem Modul zu bündeln.

Wenn eine Überschreibung innerhalb eines Moduls platziert wird (z. B. /modules/mymodule/override/classes/Product.php), kopiert PrestaShop diese bei der Installation nach /override/ und entfernt sie bei der Deinstallation vollständig. Dies ist die empfohlene Vorgehensweise.

Ein kurzes Beispiel für eine Klassenüberschreibung. Angenommen, Sie möchten den Namen des aktuellen Controllers in Ihrer Header-Vorlage verfügbar machen:

// /override/classes/controllers/FrontController.php

class FrontController extends FrontControllerCore {

    public function initHeader() {

        self::$smarty->assign('currentController', get_class($this));

        return parent::initHeader();

    }}

Rufen Sie immer die übergeordnete Methode auf, es sei denn, Sie haben einen triftigen Grund, dies nicht zu tun. Andernfalls wird die Kernfunktionalität unbemerkt beeinträchtigt.

Überschreiben von Modulklassen und Controllern

Seit PrestaShop 1.6 können Sie auch Modulklassen überschreiben. Hängen Sie dazu „Override“ an den Klassennamen an (z. B. BlockUserInfoOverride, abgeleitet von BlockUserInfo) und legen Sie die Datei unter /override/modules/ ab. Das gleiche Vorgehen gilt für Modul-Controller. Nach jeder Überschreibung müssen Sie den Cache leeren, insbesondere die Datei /cache/class_index.php löschen, da die Änderung sonst nicht wirksam wird.

Wann man Überschreibungen NICHT verwenden sollte

Überschreibungen sind exklusiv – es darf nur eine pro Klasse geben. Sie sind außerdem in Marktplatzmodulen verboten und sollten für Anpassungen im privaten Shop reserviert bleiben. Bevor Sie eine Überschreibung vornehmen, ziehen Sie eine der folgenden Alternativen in Betracht:

  • Haken: PrestaShop löst bei jedem Seitenaufruf Hook-Ereignisse aus – Sie können diese von einem Modul aus nutzen, um benutzerdefinierten Code auszuführen oder Inhalte auf die Seite zu übertragen, ohne sich auch nur in die Nähe einer Kernklasse begeben zu müssen.
  • Symfony-Service-Überschreibungen: Teile von PrestaShop, die auf Symfony migriert wurden, ermöglichen einen übersichtlicheren Umgang mit dem Service-Container. Anstatt die Klasse selbst zu verändern, können Sie einen Service anpassen oder ersetzen.
  • Benutzerdefiniertes Objektmodell: Müssen Sie einer Kernentität Felder hinzufügen? Erstellen Sie Ihr eigenes Objektmodell mit eigener Tabelle, anstatt das bestehende zu patchen.

Sicherheit der Überschreibungen durch Updates

PrestaShop-Updates können Methodensignaturen unbemerkt ändern, sodass Ihre überschriebenen Methoden auf veralteten Annahmen basieren. Überprüfen Sie daher jede überschriebene Methode nach jedem Update. Kommentieren Sie die Änderungen und deren Gründe, prüfen Sie das Änderungsprotokoll und halten Sie die Überschreibung so klein wie möglich. Eine schlanke, gut kommentierte Überschreibung, die die übergeordneten Methoden korrekt aufruft, übersteht Aktualisierungen problemlos. Eine vollständige Klassenkopie hingegen birgt ein Fehlerrisiko.

Der „Geister“-Cache: Warum Ihre Überschreibung unsichtbar erscheint

Der häufigste Grund, warum Entwickler glauben, ihre Überschreibung sei fehlerhaft: PrestaShop durchsucht /override/ nicht bei jeder Anfrage. Stattdessen wird eine Klassenzuordnung in /cache/class_index.php kompiliert. Solange diese Datei nicht gelöscht und neu generiert wird, ist Ihre Überschreibung unsichtbar, egal wie korrekt der Code ist. Das Leeren des Smarty-Caches reicht nicht aus. Löschen Sie class_index.php manuell per FTP/SSH, über „Erweiterte Parameter > Leistung“ im Backend oder über die Symfony-Konsole.

Abbildung 1: Der PrestaShop-Override-Systemablauf und die Rolle von /cache/class_index.php.

 

Die Symfony-Mauer: Legacy-Überschreibungen funktionieren nicht für moderne Controller

Dieses veraltete PHP-System funktioniert nur mit der älteren ObjectModel-Schicht von PrestaShop. Ab PS 1.7 wurden wichtige Bereiche des Backends, darunter die neuen Produktseiten und Bestellbildschirme, in Symfony neu geschrieben. Das PHP-Override-System hat keinen Einfluss auf diese Symfony-Controller. Für diese Zwecke verwenden Sie Service DekorationSie können einen Dienst über die services.yml-Datei Ihres Moduls einbinden oder ersetzen. Falls eine Überschreibung auch nach dem Löschen der class_index.php-Datei keine Wirkung zeigt, ist der Controller wahrscheinlich auf Symfony migriert.

Konfliktlösung: Wenn zwei Module denselben Kurs belegen wollen

Wenn zwei Module dieselbe Klasse überschreiben, gibt PrestaShop bei der zweiten Installation eine Fehlermeldung aus und deaktiviert die Überschreibung. Die Lösung ist manuell: Öffnen Sie beide Dateien, führen Sie alle Methoden in einer einzigen Datei im Verzeichnis `/override/` zusammen, die die Core-Klasse erweitert, und löschen Sie anschließend die Datei `class_index.php`. Fügen Sie Kommentare hinzu, die angeben, welches Modul welche Methode beigesteuert hat. Aus diesem Grund sind Überschreibungen in Marktplatzmodulen nicht zulässig; Konflikte werden so zum Problem des Händlers. Verwenden Sie für andere Anwendungen Hooks.

Abbildung 2: Wie Überschreibungskonflikte entstehen, wenn zwei Module auf dieselbe Klasse abzielen, und die manuelle Zusammenführungslösung.

Über Knowband

Knowband ist ein vertrauenswürdiger Anbieter von E-Commerce-Plugins und -Erweiterungen mit jahrelanger Erfahrung in der Unterstützung von Online-Händlern beim Aufbau schnellerer, intelligenterer und funktionsreicherer Shops. Egal, ob Sie Ihren Shop auf einer Webplattform betreiben. PrestaShop, OpenCartShopify, WooCommerce, MagentoOb Sie nun eine Anwendung auf einer beliebigen anderen großen Plattform verwenden oder nicht – Knowband bietet eine breite Palette an sofort einsatzbereiten Plugins und Erweiterungen, mit denen Sie die Funktionalität verbessern, die Leistung steigern und ein besseres Einkaufserlebnis bieten können, ohne dass Sie von Grund auf neu entwickeln müssen.

Was ist neu in PrestaShop 9.0? Vollständiger Funktions- und Migrationsleitfaden

 

Warum PrestaShop?

PrestaShop ist eine führende Open-Source-E-Commerce-Plattform, die für ihre Flexibilität, leistungsstarken Funktionen und die Null-Lizenzkosten bekannt ist. Dank ihrer intuitiven Benutzeroberfläche, der Unterstützung mehrerer Sprachen und Währungen sowie einem umfangreichen Ökosystem an Modulen und Themes ist sie ideal für KMU, die individuelle Online-Shops erstellen. PrestaShop 9.0 stellt einen wichtigen Meilenstein dar und bietet Leistungsverbesserungen und wesentliche architektonische Verbesserungen, die moderne Entwicklungsstandards, Skalierbarkeit und langfristige Wartbarkeit widerspiegeln.

Was ist neu in PrestaShop 9.0?

PrestaShop 9.0 bringt eine vollständige Modernisierung des Kern-Frameworks – ein großer Schritt nach vorn, der die Art und Weise neu definiert, wie Entwickler und Shop-Besitzer mit dem System interagieren.

Änderungen an der Kernarchitektur

 

Vollständige Symfony-Integration: PrestaShop 9 schließt die Umstellung auf das Symfony-Framework ab und bietet damit eine moderne, stabile Grundlage für zukünftige Entwicklungen. Legacy-Klassen und veraltete Controller wurden verworfen oder ersetzt, wodurch das System wartungsfreundlicher und an Best Practices ausgerichtet wird.

PHP 8.1+-Unterstützung: Erfordert PHP 8.1 oder höher, um Kompatibilität mit den neuesten Funktionen, verbesserte Sicherheit und schnellere Leistung zu gewährleisten.

Lehre DBAL: Die Datenbankabstraktionsschicht verbessert Datenbankinteraktionen und bietet bessere Abstraktion, Abfrageerstellung und Testbarkeit – besonders vorteilhaft bei umfangreichen Anpassungen.

Komponistenzentrierte Entwicklung: Composer 2.x spielt jetzt eine zentrale Rolle im Entwicklungsworkflow und übernimmt nahtlos die Abhängigkeitsverwaltung, die Modulintegration und das automatische Laden. Dies vereinfacht die Versionskontrolle und verbessert die CI/CD-Kompatibilität.

Backoffice- und Entwickler-Erweiterungen

Während Händler und Entwickler sich auf Backend-Verbesserungen konzentrieren, werden sie Folgendes bemerken:

  • Schnelleres Laden von Seiten und verbesserte Serverantwortzeiten
  • Sauberere Codebasis durch Entfernung der Legacy-Logik
  • Verbesserte Modularität für sauberere, eigenständige Module
  • Stärkere Testabdeckung für stabile, sichere Releases

Obwohl die Änderungen an der Benutzeroberfläche minimal sind, verbessern diese internen Updates die Stabilität und Wartbarkeit des Shops erheblich.

Migrationsleitfaden: Von PrestaShop 8 auf 9

Methode 1: Upgrade mit einem Klick (empfohlen)

Verfügbare Tools:

  • Offizielles 1-Klick-Upgrade-Modul: Standardmäßiges PrestaShop-Upgrade-Modul, das Versionsübergänge automatisch handhabt
  • MigrationPro: Drittanbieterlösung zur Unterstützung der Migration mit umfassender Datenübertragung
  • PrestaShop Migrator: Alternative Ein-Klick-Lösung für nahtlose Upgrades

Vorteile:

  • Automatisierter Prozess mit minimalem manuellen Eingriff
  • Integrierte Datenintegritätsprüfungen
  • Reduziertes Risiko menschlicher Fehler
  • Schnellere Migrationszeit
  • Automatisierte Backup-Erstellung

Autoupgrade-Sicherungsprozess:

  1. BackupInitialization: Prozessstart, Löschen übrig gebliebener temporärer Dateien
  2. BackupFiles: Vollständige Sicherung von Store-Dateien, Designs, Modulen, Bildern und benutzerdefiniertem Code
  3. BackupDatabase: Erstellt eine vollständige Sicherung der gesamten Datenbank, einschließlich aller Tabellen und gespeicherten Daten.
  4. Lassen Sie mich wissen, ob Sie eine kürzere oder ausführlichere Version bevorzugen.
  5. BackupComplete: Prozessabschluss mit Verifizierung

Rollback-Prozess: Wenn beim Upgrade Probleme auftreten, können Sie es einfach über den Abschnitt „Rollback“ des Autoupgrade-Moduls rückgängig machen, indem Sie das Sicherungsarchiv auswählen und den Rollback-Fortschritt überwachen.

Datenmigration: Bewältigt automatisch die Übertragung von Produkten, Kategorien, Attributen, Kundenkonten, Bestellverlauf, CMS-Seiten, Konfigurationseinstellungen, Bildern und kompatiblen Modulkonfigurationen.

Methode 2: Manuelle Migration (zeitintensiv)

Neue PrestaShop 9-Installation, gefolgt von manueller Datenmigration.

Prozessübersicht:

  1. Überprüfen der Serveranforderungen: PHP 8.1+, MySQL 5.7+/MariaDB 10.3+, Composer 2.x, Apache/Nginx
  2. Vollständige Sicherung: Datenbank, Dateien, Konfiguration, benutzerdefinierter Code
  3. Installieren Sie PrestaShop 9.0: Neuinstallation über Git und Composer
  4. Datenmigrationsstrategie: Exportieren Sie aus PS8 (Produkte, Kunden, Bestellungen, CMS, Konfigurationen) und importieren Sie in PS9 mit nativen Tools, Modulen von Drittanbietern oder manueller Eingabe
  5. Modulkompatibilitätsbewertung: Vorhandene Module prüfen, kompatible aktualisieren, Alternativen für inkompatible Module identifizieren
  6. Themenrekonstruktion: Designs mit der aktualisierten Architektur von PS9 neu erstellen und an die Symfony-Anforderungen anpassen
  7. Umfassende Tests: Front-Office-Funktionalität (Browsing, Checkout, Zahlungen, Mobil) und Back-Office-Funktionalität (Produktverwaltung, Bestellungen, Berichterstellung)

Software Empfehlungen

Methode 1 (Upgrade mit einem Klick) wird den meisten Händlern aus folgenden Gründen dringend empfohlen:

  • Deutlich reduzierte Migrationszeit
  • Geringeres Risiko von Datenverlust/-beschädigung
  • Automatisierte Handhabung komplexer Datenbeziehungen
  • Integrierte Rollback-Funktionen
  • Verfügbarkeit professioneller Unterstützung

Erwägen Sie Methode 2 (Manuelle Migration) nur bei spezifischen Anpassungsanforderungen, die eine Neuinstallation erfordern, oder wenn automatisierte Tools nicht kompatibel sind.

Checkliste nach der Migration

Unabhängig von der gewählten Methode:

  • Überprüfen Sie alle kritischen Store-Funktionen
  • Testen Sie Zahlungs- und Versandintegrationen
  • SEO-Einstellungen und URL-Strukturen bestätigen
  • Aktualisieren Sie bei Bedarf DNS- und SSL-Zertifikate
  • Überwachen Sie die Site-Leistung und Ladegeschwindigkeiten
  • Schulung des Personals zu Schnittstellenänderungen

Abschließende Überlegungen

PrestaShop 9.0 setzt konsequent auf verbesserte Geschwindigkeit, verbesserte Sicherheit und ein stärker entwicklerorientiertes Ökosystem. Obwohl das Upgrade Planung und Aufwand erfordert, sind die langfristigen Vorteile beträchtlich: bessere Leistung, saubererer Code, verbesserte Skalierbarkeit und moderne Tools.

Wenn Sie eine ältere Version verwenden, bewerten Sie den langfristigen Wert einer Migration zu Prestashop 9. Wenn Sie sich über den Prozess nicht sicher sind oder keine internen Entwickler haben, wird dringend empfohlen, einen PrestaShop-Experten oder zertifizierten Partner zu konsultieren.

Sie sind sich noch nicht sicher, ob Sie wechseln möchten?

Wenn Sie sich nicht sicher sind, ob der Wechsel von PrestaShop 8 zu 9 der richtige Schritt für Ihren Shop ist, laden wir Sie ein, sich unseren detaillierten Vergleich und die Experteneinblicke anzusehen.

Entdecken Sie die wichtigsten Vorteile, potenziellen Risiken und tatsächlichen Auswirkungen einer Migration – und treffen Sie eine fundierte Entscheidung für Ihr Unternehmen.

Entdecken Sie den Vergleichsleitfaden PrestaShop 8 vs. 9