Анонимирование IP посетителей в GTM в соответствии с cookie пользователя для GDPR

Поэтому я настроил GTM для анонимизации IP-адреса пользователя при просмотре страницы - скриншот GTM

То, что я пытаюсь достичь, это:

  • Если пользователь нажимает кнопку Да, разрешить использование файлов cookie на баннере файлов cookie. Сохраните cookie и отключите анонимность IP в PageView.
    • Если пользователь нажимает на кнопку "cookie", на баннере cookie нет файлов cookie. Удалите куки и сохраните анонимность IP на странице просмотра.

Я смог сделать это с помощью gtag, но мне нужно, чтобы это работало для GTM. Должен ли я что-то выдвинуть к датайеру просмотра страниц? Если да, то как мне это сделать, но у меня нет большого опыта использования DataLayer в GTM. Приведенный ниже код является моей реализацией для gtag, это необходимо изменить для работы с GTM.

'use strict';

class CookieBanner {
  constructor() {
    this.yesOption = $('[am-cookie-button~="yes"]');
    this.noOption = $('[am-cookie-button~="no"]');
    this.cookieBanner = $('[am-cookie]');
  }

  init() {
    this.storeCookies();
    this.destroyCookies();
    this.checkCookies();
  }

  setCookie(name,value,days) {
    let expires = "";
    if (days) {
      let date = new Date();
      date.setTime(date.getTime() + (days*24*60*60*1000));
      expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
  }

  getCookie(name) {
    let nameEQ = name + "=";
    let ca = document.cookie.split(';');
    for(let i=0;i < ca.length;i++) {
        let c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  }

  eraseCookie(name) {
    document.cookie = name+'=; Max-Age=-99999999;';
  }

  checkCookies() {
    let cookiesEnabled = this.getCookie('Cookies Enabled');
    let cookiesDisabled = this.getCookie('Cookies Disabled');

    if (cookiesEnabled == null && cookiesDisabled == null) {
      this.cookieBanner.addClass('active');
    }
  }

  storeCookies() {
    let _parent = this;

    this.yesOption.on('click', function(el){
      
      //  Allow IP
      // Below needs replacing with GTM Page View datalayer 
      gtag('config', 'UA-118146882-1', { 'anonymize_ip': false });
      _parent.setCookie('Cookies Enabled','GDPR',365);
      _parent.eraseCookie('Cookies Disabled');
      _parent.cookieBanner.removeClass('active');

    });
  }

  destroyCookies() {
    let _parent = this;
    
    this.noOption.on('click', function(el){

      // Set IP to anon in GA
      // Below needs replacing with GTM Page View datalayer 
      gtag('config', 'UA-118146882-1', { 'anonymize_ip': true });
      _parent.setCookie('Cookies Disabled','GDPR',365);
      _parent.eraseCookie('Cookies Enabled');
      _parent.cookieBanner.removeClass('active');
    });
  }
}

export default CookieBanner;

Реализация кода GTM ниже:

<script>
  (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer','GTM-5CKLHM');
</script>

Спасибо, был бы очень признателен, если бы кто-то смог показать мне, как это работает

0 ответов

Другие вопросы по тегам