Sin impuesto Con impuesto

Hooks in PrestaShop 9: wie sie funktionieren, welche Sie nutzen sollten und wie Sie eigene erstellen

Hooks sind der saubere Weg, PrestaShop zu erweitern, ohne den Core anzufassen. Wir erklären die beiden Typen, wie man sie richtig registriert und die häufigsten stillen Fehler.

Jesús Meilán
Updated: 26/09/2026 141
Hooks in PrestaShop 9: wie sie funktionieren, welche Sie nutzen sollten und wie Sie eigene erstellen
Share:

Ein Hook ist ein Einhängepunkt, den PrestaShop in seinem Code vorsieht, damit ein Modul Inhalte hinzufügen oder auf ein Ereignis reagieren kann, ohne den Core zu verändern. Er ist das Bauteil, das es möglich macht, dass ein Shop hundert Module hat und trotzdem aktualisierbar bleibt. Wenn Sie für PrestaShop entwickeln, erspart Ihnen ein gutes Verständnis der Hooks die Hälfte der Probleme.

Zwei Familien: display und action

  • Anzeige-Hooks (display*): Sie liefern HTML zurück, das an einer bestimmten Stelle der Seite ausgegeben wird. Zum Beispiel displayProductAdditionalInfo auf der Produktseite oder displayFooter im Footer.
  • Aktions-Hooks (action*): Sie geben nichts aus, sondern werden ausgeführt, wenn etwas passiert. actionValidateOrder beim Anlegen einer Bestellung, actionObjectProductUpdateAfter beim Speichern eines Produkts.

Außerdem gibt es Hooks, die Daten zurückgeben, die der Core zusammenführt, etwa paymentOptions, an den jedes Zahlungsmodul seine PaymentOption liefert.

Einen Hook richtig registrieren

Die Registrierung erfolgt bei der Installation des Moduls und wird in der Tabelle hook_module gespeichert:

public function install()
{
    return parent::install()
        && $this->registerHook('displayProductAdditionalInfo')
        && $this->registerHook('actionValidateOrder');
}

public function hookDisplayProductAdditionalInfo(array $params)
{
    $this->context->smarty->assign(['product' => $params['product']]);

    return $this->fetch('module:' . $this->name . '/views/templates/hook/info.tpl');
}

Die Methode heißt hook + der Name des Hooks mit großem Anfangsbuchstaben. PrestaShop unterscheidet beim Hook-Namen nicht zwischen Groß- und Kleinschreibung, aber die PHP-Methode muss existieren.

Typische Falle: Wenn Sie in einer neuen Version Ihres Moduls einen Hook hinzufügen, registrieren ihn die Shops, die das Modul bereits installiert hatten, nicht von selbst, weil install() nicht erneut ausgeführt wird. Das muss in einem Skript unter upgrade/ geschehen.

Positionen und Ausnahmen

Wenn mehrere Module am selben Hook hängen, werden sie in der Reihenfolge der Spalte position ausgeführt. Das ändern Sie unter Design > Positionen, wo Sie für ein Modul auch einzelne Seiten ausschließen können. Wenn ein Block dort erscheint, wo er nicht hingehört, schauen Sie zuerst dort nach, bevor Sie Code anfassen.

Eigene Hooks erstellen

Ein Theme oder ein Modul kann einen Hook aufrufen, den es im Core nicht gibt: {hook h='displayMiTiendaCabecera'} in Smarty oder Hook::exec('displayMiTiendaCabecera') in PHP. Beim ersten Mal, wenn ein Modul ihn registriert, legt PrestaShop ihn in der Tabelle hook an. Das ist der sauberste Weg, in eigenen Entwicklungen Erweiterungspunkte anzubieten, und den nutzen wir zum Beispiel, damit jeder Abschnitt einer Startseite separat bearbeitet werden kann.

Warum ein Modul „nichts anzeigt“

  1. Das Modul ist installiert, aber nicht an diesem Hook registriert (siehe Positionen).
  2. Das Theme ruft diesen Hook nicht auf. Ein Hook aus Classic existiert in Hummingbird vielleicht nicht oder liegt in einem anderen Bereich.
  3. Es ist eine Seitenausnahme konfiguriert.
  4. Das Modul ist für diesen Shop deaktiviert: In PrestaShop hängt „aktiv“ von der Zeile in module_shop ab, nicht nur von der Spalte active.
  5. Das Template des Moduls ist im Theme überschrieben und diese Kopie ist leer oder veraltet.

Bewährte Praktiken

  • Geben Sie in Anzeige-Hooks leere Strings zurück, wenn es nichts anzuzeigen gibt: keine leeren Container, die das Layout zerstören.
  • Werfen Sie in Aktions-Hooks keine unkontrollierten Exceptions: Ein Fehler dort kann das Speichern einer Bestellung blockieren.
  • Cachen Sie in Hooks, die auf allen Seiten ausgeführt werden (displayHeader, displayTop): Sie vervielfachen sich mit jedem Besuch.

Gut eingesetzte Hooks sorgen dafür, dass ein Modul PrestaShop-Updates und Theme-Wechsel übersteht. Wenn Ihnen jemand für etwas, das mit einem Hook machbar ist, einen Override vorschlägt, seien Sie misstrauisch.

Laden...
Cookie-Zustimmung
Zum Seitenanfang