PrestaShop Hooks meistern: Entwickler-Referenz für 1.7, 8.x und 9.x

Hooks sind die Art und Weise, wie Module mit PrestaShop interagieren, ohne Core-Dateien zu verändern. Zu verstehen, welchen Hook man verwenden sollte, wann er ausgelöst wird und welche Daten er bereitstellt, ist essenzielles Wissen für jeden PrestaShop-Entwickler. Diese Referenz behandelt die Hooks, die Sie am häufigsten verwenden werden.

Display Hooks vs. Action Hooks

PrestaShop hat zwei Arten von Hooks:

  • Display Hooks (Präfix: display) – rendern Inhalte an bestimmten Positionen auf der Seite. Ihre Hook-Methode gibt HTML zurück. Beispiel: displayHeader, displayProductAdditionalInfo
  • Action Hooks (Präfix: action) – werden ausgelöst, wenn etwas passiert. Ihre Hook-Methode führt Logik aus, gibt aber nichts Sichtbares zurück. Beispiel: actionCartSave, actionOrderStatusPostUpdate

Front Office Display Hooks

Seitenstruktur

  • displayHeader – innerhalb von <head>. CSS, Meta-Tags, JS-Referenzen hinzufügen. Wird auf jeder Front-Seite ausgelöst.
  • displayTop / displayNavFullWidth – oberer Navigationsbereich. Banner, Ankündigungen.
  • displayHome – Inhaltsbereich der Startseite. Hervorgehobene Produkte, Slider, Aktionen.
  • displayFooter / displayFooterBefore – Footer-Inhalte. Newsletter-Anmeldung, Vertraünssiegel.

Produktseite

  • displayProductAdditionalInfo – unterhalb des Warenkorb-Buttons. Lieferschätzungen, Bestandswarnungen.
  • displayProductExtraContent – fügt Tabs zur Produktseite hinzu. Gibt ein PrestaShop\PrestaShop\Core\Product\ProductExtraContent-Objekt zurück.
  • displayAfterProductThumbs – unterhalb der Produktbilder. Zusätzliche Medien, 360-Grad-Ansichten.
  • displayProductListReviews – in Produktlisten, unter jedem Produkt. Sternebewertungen.

Warenkorb und Checkout

  • displayShoppingCartFooter – unterhalb der Warenkorb-Tabelle. Cross-Sell-Vorschläge.
  • displayPaymentReturn – Bestellbestätigungsseite. Dankesnachrichten, Tracking-Informationen.
  • displayOrderConfirmation – ebenfalls auf der Bestellbestätigung. Analytics-Tracking-Skripte.

Wichtige Action Hooks

Warenkorb-Events

  • actionCartSave – wird nach jeder Warenkorb-Änderung ausgelöst. Für Echtzeit-Bestandsprüfungen oder Preisneuberechnungen verwenden.
  • actionCartUpdateQuantityBefore – vor Mengenänderungen. Ermöglicht Validierung oder Blockierung der Änderung.

Bestell-Events

  • actionValidateOrder – wird bei Erstellung einer Bestellung ausgelöst. Enthält das vollständige Bestellobjekt, Warenkorb, Kunde und Währung.
  • actionOrderStatusPostUpdate – nach einer Bestellstatus-Änderung. Benachrichtigungen auslösen, externe Systeme aktualisieren, Bestand anpassen.
  • actionPaymentConfirmation – wenn die Zahlung bestätigt wird. Unterscheidet sich von der Bestellvalidierung bei aufgeschobenen Zahlungsmethoden.

Kunden-Events

  • actionCustomerAccountAdd – neue Kundenregistrierung. Sync zum CRM, Willkommens-E-Mail auslösen.
  • actionAuthentication – Kunde meldet sich an. Letzte Anmeldung aktualisieren, Sitzungsdaten synchronisieren.

Produkt-Events

  • actionProductSave – Produkt erstellt oder aktualisiert. Zu Feeds synchronisieren, Caches aktualisieren.
  • actionProductDelete – Produkt entfernt. Zugehörige Moduldaten bereinigen.
  • actionUpdateQuantity – Bestandsänderungen. Niedrigbestand-Alarme auslösen, Verfügbarkeit aktualisieren.

Dynamic Hooks (PS 1.7.7+)

PrestaShop generiert Hooks dynamisch basierend auf Entity und Action:

action{Entity}{Action}Before
action{Entity}{Action}After

Zum Beispiel: actionProductFormBuilderModifier ermöglicht das Hinzufügen von Feldern zum Produktbearbeitungsformular im Admin-Panel.

Der setMedia Hook

actionFrontControllerSetMedia ist der richtige Ort, um CSS- und JavaScript-Dateien zu registrieren. Im Gegensatz zu displayHeader wird er vor dem Rendern der Seite ausgelöst und stellt den Controller-Kontext bereit: Für eine weniger technische Übersicht lesen Sie unseren Leitfaden wie Module über Hooks mit Ihrem Shop kommunizieren. Ein Performance-Modul kann langsame Hooks identifizieren.

public function hookActionFrontControllerSetMedia($params)
{
    $controller = $this->context->controller;
    if ($controller instanceof ProductController) {
        $this->context->controller->registerStylesheet(
            'my-module-css',
            'modules/' . $this->name . '/views/css/product.css'
        );
    }
}

Häufige Fallstricke

  • Schwere Datenbankabfragen in Display Hooks – Display Hooks werden bei jedem Seitenaufruf ausgelöst. Cachen Sie Ihre Abfragen oder verwenden Sie Lazy Loading.
  • Hooks registrieren, die man nicht nutzt – jeder registrierte Hook verursacht Overhead, selbst wenn die Methode nichts zurückgibt.
  • registerHook() in install() vergessen – Hooks müssen während der Modulinstallation registriert werden. Dies zu vergessen ist der Grund Nr. 1, warum Hooks nicht ausgelöst werden.
  • Controller-Klasse nicht prüfen – wenn Ihr Hook nur auf Produktseiten laufen soll, prüfen Sie instanceof ProductController bevor Sie arbeiten.

Hooks sind mächtig, erfordern aber Disziplin. Verwenden Sie den richtigen Hook für die richtige Aufgabe, halten Sie Ihre Hook-Methoden schnell und testen Sie immer mit aktiviertem Cache, um Performance-Probleme früh zu erkennen. Unser Checkout Revolution Modul nutzt viele dieser Hooks für ein optimiertes Checkout-Erlebnis.

Diesen Beitrag teilen:
David Miller

David Miller

Über ein Jahrzehnt praktische PrestaShop-Expertise. David entwickelt leistungsstarke E-Commerce-Module mit Fokus auf SEO, Checkout-Optimierung und Shop-Management. Leidenschaft für sauberen Code...

Hat Ihnen dieser Artikel gefallen?

Erhalten Sie unsere neuesten Tipps, Anleitungen und Modul-Updates direkt in Ihr Postfach.

Kommentare (2)

D
David Chen 14.02.2026
The section on displayProductAdditionalInfo was really useful. We were hooking into the wrong place for our custom fields module. Switched to the recommended hook and it works perfectly now.
Antworten
A
Anna Petrova 14.02.2026
This hooks reference is exactly what I needed. Bookmarked! I have been searching for a comprehensive list that covers all three PS versions in one place.
Antworten

Einen Kommentar hinterlassen

Lade ...
Nach oben