Отслеживание продаж Диспетчера тегов для компаратора цен

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

Мне нужно внедрить тег отслеживания продаж для веб-сайта сравнения цен, на который мы хотим ссылаться.

Я нашел шаблон отслеживания тегов, предоставленный компанией, однако мне не удалось получить тот же результат. Этот тег доступен на веб-сайте, который меня просят реализовать:

var _kkstrack = {
      merchantInfo : [{ country:"COUNTRY_CODE", merchantId:"COMID_VALUE" }],
      orderValue: 'ORDER_VALUE',
      orderId: 'ORDER_ID',
      basket:  [{ productname: 'PRODUCT1_NAME',
                 productid: 'PRODUCT1_ID',
                 quantity: 'PRODUCT1_QUANTITY',
                 price: 'PRODUCT1_PRICE'
                },
                { productname: 'PRODUCT2_NAME',
                 productid: 'PRODUCT2_ID',
                 quantity: 'PRODUCT2_QUANTITY',
                 price: 'PRODUCT2_PRICE'
                }
               ]
    };
    (function() {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = 'https://s.kk-resources.com/ks.js';
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    })();

Я реализовал этот тег, я создал свои переменные, основанные на моем уровне данных, то есть: «ecommerce.purchase.products.0.id», например, для productid. Однако это не сработало, я имею в виду, что у меня было дублирование, для 2 заказанных разных продуктов у меня получилось одно и то же название, идентификатор для обоих. Второй предмет имел те же характеристики, что и первый.

Итак, я попробовал второе решение: Для каждой переменной я использовал собственный Javascript (Kelkoo — покупка соответствует переменной уровня данных «ecommerce.purchase»). Вот что я написал:

function() {
  var products = {{Kelkoo - purchase}};
 return products.map(function(prod) { return prod.price; });
}

К сожалению, возникла другая проблема: я получил все данные о продуктах рядом друг с другом, разделенные запятой (productid: 34756, 8546), как показано ниже:

 basket:  [{ productname: 'PRODUCT1_NAME', 'PRODUCT2_NAME',
             productid: 'PRODUCT1_ID', 'PRODUCT2_ID',
             quantity: 'PRODUCT1_QUANTITY', 'PRODUCT2_QUANTITY',
             price: 'PRODUCT1_PRICE','PRODUCT2_PRICE'
            }
           ]
};

Я хотел бы вернуть данные в этом формате

 basket:  [{ productname: 'PRODUCT1_NAME',
             productid: 'PRODUCT1_ID',
             quantity: 'PRODUCT1_QUANTITY',
             price: 'PRODUCT1_PRICE'
            },
            { productname: 'PRODUCT2_NAME',
             productid: 'PRODUCT2_ID',
             quantity: 'PRODUCT2_QUANTITY',
             price: 'PRODUCT2_PRICE'
            }
           ]

Как я могу сделать, я должен построить массив?

Я благодарю вас за внимание к этому вопросу.

Спасибо

Можете ли вы уточнить, что вы пытаетесь отслеживать? Является ли конечная цель событиями в GA? Транзакции электронной коммерции в GA? Расширенная электронная коммерция в GA?

XTOTHEL 14.02.2019 15:59

Извините, что не указал это, я новичок, поэтому мне это не пришло в голову: это расширенная электронная коммерция.

Sarah L 15.02.2019 16:22

Переменная products уже представляет собой массив объектов. Вам просто нужно включить это как часть json, который был отправлен в электронную коммерцию. Я не думаю, что вам нужно строить что-то особенное.

XTOTHEL 15.02.2019 17:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, у вас уже есть слой данных с данными о продукте, который соответствует требуемому содержанию и структуре данных расширенной электронной торговли для Google Analytics. Вы хотите преобразовать данные о продукте в формат, используемый в ключе basket переменной _kkstrack.

На основе расширенной электронной торговли Руководство для разработчиков данные о покупках в расширенной электронной торговле имеют следующий формат.

dataLayer.push({
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
        'affiliation': 'Online Store',
        'revenue': '35.43',                     // Total transaction value (incl. tax and shipping)
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      'products': [{                            // List of productFieldObjects.
        'name': 'Triblend Android T-Shirt',     // Name or ID is required.
        'id': '12345',
        'price': '15.25',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Gray',
        'quantity': 1,
        'coupon': ''                            // Optional fields may be omitted or set to empty string.
       },
       {
        'name': 'Donut Friday Scented T-Shirt',
        'id': '67890',
        'price': '33.75',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Black',
        'quantity': 1
       }]
    }
  }
});

У вас есть несколько вариантов ссылки на эти данные: либо путем указания всего объекта электронной торговли на переменную dataLayer в GTM (а затем ссылки на его ключи в вашем коде), либо путем указания непосредственно на массивы продуктов. (Я использую это последнее, поэтому имя переменной dataLayer будет ecommerce.purchase.products)

Присвоив продуктам имя переменной GTM {{DLV — Продукты для электронной торговли}}, вы можете создать пользовательскую функцию JavaScript для выполнения необходимых преобразований.

function() {
  return {{DLV - Ecommerce purchase products}}.map(function(e) {
    return {
      productname: e.name,
      productid: e.id,
      quantity: e.quantity,
      price: e.price      
    };
  });
}

В вашей функции вы перебираете все элементы массива продуктов и возвращаете существующие данные под разными ключами, которые запрашиваются этим другим инструментом. Теперь вы можете использовать эту пользовательскую переменную JavaScript в своем пользовательском теге HTML, где вы устанавливаете содержимое переменной basket.

Очевидно, вы можете использовать свое собственное соглашение об именах переменных, если вы ссылаетесь на него в своей пользовательской переменной JavaScript.

Надеюсь, я хорошо понял ваш вопрос, и вы сможете решить свою задачу с помощью этого ответа.

Большое спасибо, это действительно помогло мне, я боролся, и теперь я вижу яснее, я попытался, и это сработало.

Sarah L 27.02.2019 16:46

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