Hooki to sposob, w jaki moduly wchodza w interakcje z PrestaShop bez modyfikowania plikow rdzenia. Zrozumienie, ktorego hooka uzyc, kiedy sie uruchamia i jakie dane dostarcza, jest niezbedna wiedza dla kazdego dewelopera PrestaShop. Ten przewodnik obejmuje hooki, z ktorych bedziesz korzystac najczesciej.

Display Hooks vs. Action Hooks

PrestaShop ma dwa typy hookow:

  • Display Hooks (prefiks: display) – renderuja zawartosc w okreslonych pozycjach na stronie. Twoja metoda hooka zwraca HTML. Przyklad: displayHeader, displayProductAdditionalInfo
  • Action Hooks (prefiks: action) – uruchamiaja sie, gdy cos sie dzieje. Twoja metoda hooka wykonuje logike, ale nie zwraca niczego widocznego. Przyklad: actionCartSave, actionOrderStatusPostUpdate

Front Office Display Hooks

Struktura strony

  • displayHeader – wewnatrz <head>. Dodawanie CSS, meta tagow, referencji JS. Uruchamia sie na kazdej stronie front.
  • displayTop / displayNavFullWidth – gorny obszar nawigacji. Bannery, ogloszenia.
  • displayHome – obszar tresci strony glownej. Wyroznione produkty, slidery, promocje.
  • displayFooter / displayFooterBefore – tresc stopki. Zapis do newslettera, odznaki zaufania.

Strona produktu

  • displayProductAdditionalInfo – ponizej przycisku dodania do koszyka. Szacunki dostawy, ostrzezenia o stanie magazynowym.
  • displayProductExtraContent – dodaje zakladki do strony produktu. Zwraca obiekt PrestaShop\PrestaShop\Core\Product\ProductExtraContent.
  • displayAfterProductThumbs – ponizej zdjec produktu. Dodatkowe media, widoki 360 stopni.
  • displayProductListReviews – w listach produktow, pod kazdym produktem. Oceny gwiazdkowe.

Koszyk i Checkout

  • displayShoppingCartFooter – ponizej tabeli koszyka. Sugestie cross-sell.
  • displayPaymentReturn – strona potwierdzenia zamowienia. Wiadomosci podziekowania, informacje o sledzeniu.
  • displayOrderConfirmation – rowniez na potwierdzeniu zamowienia. Skrypty sledzenia analytics.

Kluczowe Action Hooks

Zdarzenia koszyka

  • actionCartSave – uruchamia sie po kazdej modyfikacji koszyka. Uzywaj do sprawdzania stanu magazynowego w czasie rzeczywistym lub przeliczania cen.
  • actionCartUpdateQuantityBefore – przed zmianami ilosci. Pozwala na walidacje lub zablokowanie zmiany.

Zdarzenia zamowien

  • actionValidateOrder – uruchamia sie przy tworzeniu zamowienia. Zawiera pelny obiekt zamowienia, koszyk, klienta i walute.
  • actionOrderStatusPostUpdate – po zmianie statusu zamowienia. Wyzwalanie powiadomien, aktualizacja systemow zewnetrznych, korekta stanow magazynowych.
  • actionPaymentConfirmation – gdy platnosc jest potwierdzona. Rozni sie od walidacji zamowienia dla odroczonych metod platnosci.

Zdarzenia klienta

  • actionCustomerAccountAdd – nowa rejestracja klienta. Synchronizacja z CRM, wyzwolenie emaila powitalnego.
  • actionAuthentication – klient sie loguje. Aktualizacja ostatniego logowania, synchronizacja danych sesji.

Zdarzenia produktu

  • actionProductSave – produkt utworzony lub zaktualizowany. Synchronizacja do feedow, aktualizacja cache.
  • actionProductDelete – produkt usuniety. Czyszczenie powiazanych danych modulu.
  • actionUpdateQuantity – zmiany poziomu stanow magazynowych. Wyzwalanie alertow niskiego stanu, aktualizacja dostepnosci.

Dynamic Hooks (PS 1.7.7+)

PrestaShop generuje hooki dynamicznie na podstawie encji i akcji:

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

Na przyklad: actionProductFormBuilderModifier pozwala dodawac pola do formularza edycji produktu w panelu admin.

Hook setMedia

actionFrontControllerSetMedia to wlasciwe miejsce do rejestrowania plikow CSS i JavaScript. W przeciwienstwie do displayHeader, uruchamia sie przed renderowaniem strony i dostarcza kontekst controllera:

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'
        );
    }
}

Typowe pulapki

  • Ciezkie zapytania bazodanowe w Display Hooks – Display Hooks uruchamiaja sie przy kazdym ladowaniu strony. Cachuj swoje zapytania lub uzywaj leniwego ladowania.
  • Rejestrowanie hookow, ktorych nie uzywasz – kazdy zarejestrowany hook dodaje narzut, nawet jesli metoda nic nie zwraca.
  • Zapominanie o registerHook() w install() – hooki musza byc rejestrowane podczas instalacji modulu. Zapomnienie o tym to powod nr 1, dlaczego hooki sie nie uruchamiaja.
  • Niesprawdzanie klasy controllera – jesli Twoj hook powinien dzialac tylko na stronach produktu, sprawdz instanceof ProductController zanim zaczniesz prace.

Hooki sa potezne, ale wymagaja dyscypliny. Uzywaj wlasciwego hooka do wlasciwego zadania, utrzymuj swoje metody hookow szybkimi i zawsze testuj z wlaczonym cache, aby wczesnie wylapac problemy z wydajnoscia.

Udostępnij wpis:
David Miller

David Miller

Ponad dekada praktycznego doświadczenia z PrestaShop. David tworzy wydajne moduły e-commerce skupione na SEO, optymalizacji zamówień i zarządzaniu sklepem. Pasjonat czystego kodu i mierzalnych...

Komentarze (2)

D
David Chen 2026-02-14
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.
Odpowiedz
A
Anna Petrova 2026-02-14
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.
Odpowiedz

Zostaw komentarz

Ładowanie...
Powrót do góry