Przesyłanie UserId do Google Tag Manager

0

Cześć. Potrzebuję wysłać UserId do Google Tag Manager. Z tego co czytałem muszę to zrobić za pomocą kawałka kodu w mojej aplikacji. Służy do tego specjalna zmienna DataLayer.

<script>
// muszę pobrać MyUserId i przesłać do dataLAyer pod kluczem "uid"
  dataLayer = [{"uid":MyUserId}];
</script>

Chciałem kawałem takiego skryptu wrzucić do mojego pliku głównego, do index.hml. Ale tutaj trochę utknąłem bo nie mam pomysłu jak wyciągnąć userId w mojej aplikacji np. w sekcji HEAD czy w sekcji body przez angular. Z tego co się orientowałem to najlepiej to zrobić w sekcji HEAD. Poniżej jest okrojona wersja mojego index.html:

<html>
<head>
    <!-- Google Tag Manager -->
    <script>
        // I tutaj nie wiem jak mógłbym wyciągnąć UserId ?? Są jakieś globalne zmienne które dostarcza nam Symfony?
        //dataLayer = [{"uid":"<?= echo $app->getUserIdFromGlobals"}];??

        dataLayer = [{"uid":MyUserId}];
    </script>

    <!-- End Google Tag Manager -->

    <meta charset="utf-8">
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>Example title</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <link rel="stylesheet" href="styles/main.css">

</head>
<body data-ng-app="app" id="app">
<div data-ng-controller="AppCtrl">
    <!-- Google Tag Manager -->
    <script>
        //Ewentualnie tutaj mógłbym jakoś przechwycić UserId z AngularaJs ale też nie mam pomysłu jak tu to przesłać i odebrać?
       //dataLayer = [{"uid":{{userId}}}];??

        dataLayer = [{"uid":MyUserId}];

    </script>
    <!-- End Google Tag Manager -->
    <section data-ng-include=" 'views/header.html' "
             id="header" class="top-header"></section>

    <div class="view-container">
        <section data-ng-view id="content" class="animate-fade-up"></section>
    </div>
</div>
</body>
</html>

Ktoś może korzystał z tego Google Tag Managera i może podpowiedzieć jak to najlepiej zrobić?

0

A dlaczego nie chcesz żeby tym się zajął Angular? Tj. teraz chcesz przekazać tylko user id, ale z czasem tych danych możesz przekazywać o wiele więcej - napisz jakiś serwis czy co tam jest w angularze który będzie zajmował się wrzucaniem danych do Data Layera (który jest tak naprawdę zwykłą tablicą).

https://stackoverflow.com/questions/41161056/angular2-best-practice-for-data-layer

0

Dziękuję za odpowiedź. Angulara dopiero poznaję. Ale wiem już jak mniej więcej działa. Nie wiem tylko jak Angular może łączyć się z DataLayerem w praktyce. Póki co chciałbym to zrobić tak aby tylko zacząć już zbierać te informacje o użytkownikach. To musiałbym jakoś wyciągnąć userId w kontrolerze "AppCtrl"? Bo jeszcze nie wiem jak działają serwisy w angualarze, wiem tylko jak kontrolery więc musiałbym to zrobić w kontrolerze póki co.

0

Ewentualnie jakbym zrobił ten serwis to skąd GTM będzie wiedział, że dataLayer utworzony w serwisie lub też w kontrolerze zawiera dane dla niego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1