Как передать куку из JS в яндекс.метрику?

Ссылка скопирована
1 ответ

Привет.

Есть PHP скрипт. Он устанавливает куку.
Есть JS скрипт. Он считывает установленную через PHP куку.
Как можно полученную через JS куку передать в метрику?
Нужно передать это значение в параметры посетителя.

Код:

// ★ устанавливаю значение var my_cookie = "haloooooooooooooooooo";  (function(d, w, c) {     (w[c] = w[c] || []).push(function() {         try {             w.yaCounter7777777 = new Ya.Metrika2({                 id: 7777777,                 clickmap: true,                 params: {                 	// ★ как передать значение сюда?                     its_my_cookie: ?????????????????,                 }             });         } catch (e) {  }     });      var n = d.getElementsByTagName("script")[0],         s = d.createElement("script"),         f = function() { n.parentNode.insertBefore(s, n); };     s.type = "text/javascript";     s.async = true;     s.src = "https://mc.yandex.ru/metrika/tag.js";  })(document, window, "yandex_metrika_callbacks2");

// ★ устанавливаю значение var my_cookie = "haloooooooooooooooooo"; (function(d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter7777777 = new Ya.Metrika2({ id: 7777777, clickmap: true, params: { // ★ как передать значение сюда? its_my_cookie: ?????????????????, } }); } catch (e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function() { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/tag.js"; })(document, window, "yandex_metrika_callbacks2");

Передаю переменную в функцию:

(function(d, w, c, my_cookie) ... its_my_cookie: my_cookie, ... (document, window, "yandex_metrika_callbacks2",my_cookie)

(function(d, w, c, my_cookie) ... its_my_cookie: my_cookie, ... (document, window, "yandex_metrika_callbacks2",my_cookie)

При рендере всего этого скрипта вместо значения переменной haloooooooooooooooooo, в параметре its_my_cookie появляется значение my_cookie

Даже если в значение поля its_my_cookie функции вставить код getCookie("my_cookie"), то на выходе получу не куку, а буквально то, что написано:

... its_my_cookie: getCookie("my_cookie") ...

... its_my_cookie: getCookie("my_cookie") ...

Что я сделал не так?

Дополнительно:

На первый взгляд всё норм, попробуй вынести конфиг в глобальный контекст:

// ★ устанавливаю значение var my_cookie = "haloooooooooooooooooo"; cosnt conf = {                 id: 7777777,                 clickmap: true,                 params: {                 	// ★ как передать значение сюда?                     its_my_cookie: ?????????????????,                 }             };  (function(d, w, c) {     (w[c] = w[c] || []).push(function() {         try {             w.yaCounter7777777 = new Ya.Metrika2(conf);         } catch (e) {  }     });      var n = d.getElementsByTagName("script")[0],         s = d.createElement("script"),         f = function() { n.parentNode.insertBefore(s, n); };     s.type = "text/javascript";     s.async = true;     s.src = "https://mc.yandex.ru/metrika/tag.js";  })(document, window, "yandex_metrika_callbacks2");

// ★ устанавливаю значение var my_cookie = "haloooooooooooooooooo"; cosnt conf = { id: 7777777, clickmap: true, params: { // ★ как передать значение сюда? its_my_cookie: ?????????????????, } }; (function(d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter7777777 = new Ya.Metrika2(conf); } catch (e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function() { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/tag.js"; })(document, window, "yandex_metrika_callbacks2");

  • Вот пример, убедись что функция получает корректно данные:
    w[c][w[c].length-1]();

    snippet

  • что значит "рендера"?
    js исполняется в браузере и там никакой магии не происходит, чтобы посмотреть на переменную нужно её вывести через console.log(), в исходниках значение вместо неё подставляться не будет
  • historydev IvanU7n Спасибо за помощь. Жестко я тупанул. Я почему-то думал, что в HTML должно выводиться взятое из кук значение в том виде, в котором оно взято, а не в виде переменной. Некоторые значения я вставлял прямо из PHP и они отображались в коде, а из JS — нет. Вот такие дела.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

    Для передачи куки из JavaScript в Яндекс.Метрику можно воспользоваться специальным методом `ym`.

    Прежде всего, необходимо установить код Яндекс.Метрики на вашем сайте, если он еще не установлен. Затем, для передачи куки, вам потребуется использовать следующий код:

     
        window.onload = function() {
            var cookieValue = document.cookie; // Получаем значение куки
            ym(YOUR_METRIKA_ID, 'params', {
                'cookieValue': cookieValue
            });
        };

    window.onload = function() { var cookieValue = document.cookie; // Получаем значение куки ym(YOUR_METRIKA_ID, 'params', { 'cookieValue': cookieValue }); };

    Здесь `YOUR_METRIKA_ID` - это идентификатор вашего счетчика Яндекс.Метрики.

    При загрузке страницы данный код получит значение куки и передаст его в Яндекс.Метрику в качестве параметра `cookieValue`. После этого вы сможете использовать этот параметр для сбора и анализа данных в Яндекс.Метрике.

    Убедитесь, что ваш счетчик Яндекс.Метрики настроен для приема и обработки пользовательских параметров, чтобы корректно отображать данные о куках.

    Таким образом, вы сможете передать куку из JavaScript в Яндекс.Метрику и использовать эту информацию для анализа поведения пользователей на вашем сайте.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно