Вывод dataLayer GTM для страниц магазина Opencart в Google Analytics

Возникла необходимость передавать в  Google Analytics некоторые данные электронной торговли с отдельных страниц магазина Opencart.  Для этого будем использовать dataLayer с определенными переменными. 

Сначала было длинное обсуждение с заказчиком, что-же ему все-таки нужно. Потом совмесно сформулировали ТЗ.

Техническое задание.

 

Страница благодарности
выводятся переменные:
- 'pagetype': 'success' - тип страницы
- 'lang': 'ru'\'uk',
- 'transactionId': '1911' - ордер id 
- 'transactionTotal': 244 - сумма ордера
- 'transactionShipping': 0 - сумма доставки
Список товаров ордера: 'transactionProducts': [{
- 'sku': '240033' - артикул
- 'name': 'Защитный крем' - название товара
- 'price': 194 - цена товара
- 'quantity': 1 - количество 

Страница товара 
выводятся переменные:
- 'pagetype': 'Product' - тип страницы
- 'lang': 'ru'\'uk',
- 'Products': [{
далее в массиве выводятся характеристики не более 10-ти вариантов товара
- 'id': '23995' - id варианта товара
- 'name': 'Аерозоль для кондиционера и салона' - название товара
- 'price': '149 грн' - цена товара
- 'brand': 'Berner' - бренд
- 'category': 'Техническая Химия'
   ......}] 

Страница Оформление заказа
- 'pagetype': 'checkout' - тип страницы
- 'lang': 'ru'\'uk',
- 'total': '1029', - сумма в корзине
Список товаров: 'Products': [
  {'id': '23995' - id варианта товара
   'name': 'Аерозоль для кондиционера и салона' - название товара
   'vendor': '338123' - артикул
   'price': '149 грн' - цена товара
   'quantity': '1' - количество
   'pr_total': '149'} - сумма по товару
   ...... }] 

Был написан модификатор для Opencart 2.3. Ввиду того, что данный магазин, от рождения, имеет специфичную структуру товаров (основной товар и его варианты) весь код приводить бессмысленно.

Приведу здесь файл модификатора

После применения модификатора получили следующие dataLayer:

Страница товара


<-script->
window.dataLayer = window.dataLayer || [];dataLayer = [{
  'pagetype': 'Product',
  'lang': 'ru',
  'Products': [
   {'id': '17147',
    'name': 'Зимние рабочие перчатки Berner Flexus 9 Размер',
    'price': 246,
    'brand': 'Berner',
    'category': 'Средства Защиты'},
   {'id': '17148',
    'name': 'Зимние рабочие перчатки Berner Flexus 10 Размер',
    'price': 246,
    'brand': 'Berner',
    'category': 'Средства Защиты'},
   {'id': '17149',
    'name': 'Зимові рукавиці Flexus, розмір 11',
    'price': 246,
    'brand': 'Berner',
    'category': 'Средства Защиты'}]}];
<-/-script->

Страница Оформление заказа


<-script->
window.dataLayer = window.dataLayer || [];dataLayer = [{
  'pagetype': 'checkout',
  'lang': 'uk',
  'total': 1029,
  'Products': [{'id': '23995',
     'name': 'Аерозоль для кондиционера и салона',
     'artikul': '338123',
     'price': 149,
     'quantity': '1',
     'pr_total': 149},
     {'id': '17147',
     'name': 'Зимние рабочие перчатки Berner Flexus 9 Размер',
     'artikul': '156353',
     'price': 246,
     'quantity': '2',
     'pr_total': 492},
     {'id': '23999',
     'name': 'Защитный крем для рук Жидкие Перчатки Berner, 250 мл',
     'artikul': '240033',
     'price': 194,
     'quantity': '2',
     'pr_total': 388}]}];
<-/-script->    

 

Заказчик: Все работает ).