SEIGI Tag Manager - Dokumentacja Integracji z modułem jPresta PageCache

Wprowadzenie

SEIGI Tag Manager to moduł umożliwiający efektywne zarządzanie tagami w środowisku PrestaShop. Integracja modułu wymaga wklejenia specjalnego fragmentu kodu, który aktywuje jego funkcjonalności w odpowiednich miejscach systemu.

Kiedy jest to potrzebne?

Integracja jest konieczna tylko wtedy, gdy moduł jPresta PageCache lub inny moduł nadpisujący dispatcher blokuje wywołanie zdarzenia:

Hook::exec('actionDispatcher', $params_hook_action_dispatcher);

W takich przypadkach SEIGI Tag Manager nie będzie działać poprawnie bez odpowiedniej modyfikacji. Dotyczy to wszystkich modułów, które nadpisują dispatcher i mogą uniemożliwiać wywołanie hooków.

Instrukcja integracji

Aby poprawnie zintegrować SEIGI Tag Manager z Twoim systemem, należy wkleić poniższy kod w odpowiednim miejscu w pliku:

// SEIGI Tag Manager Dispatcher
$stmInstance = Module::getInstanceByName('seigitagmanager');
if ($stmInstance) {
    $stmInstance->hookActionDispatcher([]);
}
// End:SEIGI Tag Manager Dispatcher

Przykład integracji w module jPresta PageCache

W przypadku integracji z modułem jPresta PageCache lub innym, który cachuje i blokuje wywołanie zdarzenia Hook::exec, kod należy dodać w funkcjach odpowiedzialnych za dispatcher, czyli dispatch_15() i dispatch_16(). Modyfikacje należy wprowadzić w pliku /override/classes/Dispatcher.php (jeśli istnieje).

Integracja w funkcji dispatch_15()

/*
 * module: pagecache
 * date: 2024-06-24 21:08:10
 * version: 9.4.1
 */
private function dispatch_15()
{
    $this->getController();
    if (!$this->controller)
        $this->controller = $this->default_controller;
    if ($this->_isPageCacheActive())
    {
        // SEIGI Tag Manager Dispatcher
        $stmInstance = Module::getInstanceByName('seigitagmanager');
        if ($stmInstance) {
            $stmInstance->hookActionDispatcher([]);
        }
        // End:SEIGI Tag Manager Dispatcher
        $pagecacheInstance = Module::getInstanceByName('pagecache');
        if ($pagecacheInstance) {
            $pagecacheInstance->hookActionDispatcherBefore();
        }
    }
    $controller_class = '';
    switch ($this->front_controller)
    {
        case self::FC_FRONT:
            // dalsza logika
            break;
    }
}

Integracja w funkcji dispatch_16()

private function dispatch_16()
{
    $this->getController();
    if (!$this->controller)
        $this->controller = $this->default_controller;
    if ($this->_isPageCacheActive())
    {
        // SEIGI Tag Manager Dispatcher
        $stmInstance = Module::getInstanceByName('seigitagmanager');
        if ($stmInstance) {
            $stmInstance->hookActionDispatcher([]);
        }
        // End:SEIGI Tag Manager Dispatcher
        $pagecacheInstance = Module::getInstanceByName('pagecache');
        if ($pagecacheInstance) {
            $pagecacheInstance->hookActionDispatcherBefore();
        }
    }
    $controller_class = '';
    switch ($this->front_controller)
    {
        case self::FC_FRONT:
            // dalsza logika
            break;
    }
}

Uwagi końcowe

  • Kod SEIGI Tag Manager Dispatcher powinien być umieszczony przed wywołaniami innych hooków, aby zapewnić prawidłowe działanie.
  • Upewnij się, że moduł SEIGI Tag Manager oraz jPresta PageCache są aktywne przed testowaniem integracji.
  • Modyfikacje należy wprowadzać w pliku /override/classes/Dispatcher.php (jeśli istnieje).

W razie problemów z integracją, prosimy o kontakt z działem wsparcia technicznego.