Jak dostosować moduł

Jeśli masz dużo zaawansowanych lub niestandardowych systemów śledzenia mogą one integrować się ze stroną za pomocą mechanizmu np. iframe. Wtedy moduł Cookies nie ma dostępu do ciasteczek z innej domeny i wymagane jest warunkowe dodawanie takiego kodu do sklepu, dopiero po akceptacji.

Można to zrobić dynamicznie za pomocą javascript, lub też po przeładowaniu strony za pomocą PHP/Smarty

Moduł pozwoli Ci zebrać zgody użytkowników oraz odczytać je zarówno po stronie przeglądarki (Javascript), jak i też po stronie serwera (PHP oraz Smarty)

Podamy tutaj kilka przykładów, jak w pełni dostosować Twoj sklep do wymagań.

Tabela dostępności ciastek

Pierwszy wiersz zawiera informacje o domenie, w której jesteśmy.
Kolumna do domena pliku cookie. W ciele tabeli mamy informację, do jakich ciasteczek możemy się dostać będąc w danej domenie oraz nimi zarządzać.

Domena sub.seigi.eu seigi.eu google.com
.sub.seigi.eu Tak - -
sub.seigi.eu Tak - -
.seigi.eu Tak Tak -
seigi.eu - Tak -
google.com - - Tak
.google.com - - Tak

Odczytywanie z poziomu Javascript

document.addEventListener('SeigiCookieEventAcceptedNecessary ', function(){  
    console.log('Accepted Necessary');
});
document.addEventListener('SeigiCookieEventAcceptedAnalytics', function(){  
    console.log('Accepted Analytics');
});
document.addEventListener('SeigiCookieEventAcceptedTargeting', function(){  
    console.log('Accepted Targeting');
});
document.addEventListener('SeigiCookieEventAcceptedPersonalizationSite', function(){  
    console.log('Accepted PersonalizationSite');
});
document.addEventListener('SeigiCookieEventAcceptedSecurity', function(){  
    console.log('Accepted Security');
});

Odczytywanie z poziomu PHP

Oto podstawowy kod, który pokazuje jak się komunikować z naszym modułem i odczytywać zgody z poziomu PHP

public function hookDisplayHeader($params) {
    // Podstawowe wywołania
    seigicookie::isAccepted('necessary');
    seigicookie::isAccepted('analytics');
    seigicookie::isAccepted('targeting');
    seigicookie::isAccepted('person_site');
    seigicookie::isAccepted('security');
    
    // necessary jest zawsze na true, jeśli użytkownik zaakceptował zgody
    if (seigicookie::isAccepted('necessary')) {
        echo "Użytkownik zaakceptował niezbędne ciasteczka. Czyli kliknął w baner Zaakceptuj, odrzuć lub ustawił własne preferencje.";
    }
    if (seigicookie::isAccepted('analytics')) {
        echo "Użytkownik zaakceptował zgodne na analitykę. Możesz uruchomić moduł GA4";
    }
}

Bardziej praktyczny przykład użycia modułu, do dodania kodu analityki na stronie

public function hookDisplayHeader($params) {
    if(!seigicookie::isAccepted('analytics')){
        return ''; // Użytkownik nie zaakceptował zgody na analitykę
    }
    // OK. Mamy zgode na analitykę. Dodajemy kod śledzący
    return '<script src="https://example.com/my_analytics.js"></script>
    <script>
    const analytics = new my_analytics("ID_12345");
    analytics.track("pageview")
    </script>';
}

Odczytywanie z poziomu Smarty

<p>necessary {if seigicookie::isAccepted('necessary')}Accepted{else}Denied{/if}</p>
<p>analytics {if seigicookie::isAccepted('analytics')}Accepted{else}Denied{/if}</p>
<p>targeting {if seigicookie::isAccepted('targeting')}Accepted{else}Denied{/if}</p>
<p>person_site {if seigicookie::isAccepted('person_site')}Accepted{else}Denied{/if}</p>
<p>security {if seigicookie::isAccepted('security')}Accepted{else}Denied{/if}</p>
<!-- Realny przykład użycia -->
{if seigicookie::isAccepted('analytics')}
    Ten element jest widoczny tylko wtedy, gdy klient zaakceptował Ciasteczka analityczne
    <script src="https://example.com/my_analytics.js"></script>
    <script>
        const analytics = new my_analytics('ID_12345');
        analytics.track('pageview')
    </script>
{/if}

Pamiętaj, nasz moduł nie może dostosować się do wszystkich innych modułów. Wymagałoby to z naszej strony edycji kodu każdego z tych modułów.

O ile nasz moduł udostępnia możliwość komunikacji z innymi modułami, to moduły analityki innych firm nie udostępniają ustandaryzowanego API, które moglibyśmy wykorzystać.

Dlatego też kwestia ew. dostosowania modułów jest w kwestii właściciela sklepu.

Jesteśmy w stanie tylko i wyłącznie zapewnić dwustronną komunikację modułów z naszego protfolio.