Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Не передаются события в dataLayer при добавлении товара в корзину


5_minutes_Turkish
 Поделиться

Рекомендованные сообщения

Добрый день. Столкнулся с проблемой когда не отрабатывает код на передачу данных при добавлении товара в корзину. 

Версия ocStore 2.3.0.2.4

 

При этом при удалении товара скрипты отлично отрабатывают :wacko:

Может кто знает в чем причина или сталкивался с подобным уже?

 

Скрипты на пуш в ДЛ добавляю в стандартный common.js - в функции переменной cart соответственно

 

к скриптам добавил коменты  // СКРИПТ КОТОРЫЙ ПУШИТ ПРИ ДОБАВЛЕНИИ / УДАЛЕНИИ чтоб понятно было где что

выглядит примерно так 

// Cart add remove functions
var cart = {
	'add': function(product_id, quantity) {
		$.ajax({
			url: 'index.php?route=checkout/cart/add',
			type: 'post',
			data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
			dataType: 'json',
			beforeSend: function() {
				
			},
			complete: function() {
				
			},
			success: function(json) {
				$('.alert, .text-danger').remove();

				if (json['redirect']) {
					location = json['redirect'];
				}

				if (json['success']) {
					// Need to set timeout otherwise it wont update the total
					setTimeout(function () {
						$('.header-item.cardIcon span').html(json['total_cart']);
					}, 100);

                    		
                    // dataLayer.push({    
                    //     'event': 'addToCart',   //added for test
                    //         'ecommerce': {     
                    //             'currencyCode': 'RUB',     
                    //             'add': {                                      
                    //             'products': [{                        
                    //             'name': '' + json['name'] + '',          
                    //             'id': '' + product_id + ''      
                    //             }]      
                    //         }    
                    //     } 
                    // });
                    
                    // СКРИПТ КОТОРЫЙ ПУШИТ ПРИ ДОБАВЛЕНИИ
                    dataLayer.push({
                        "ecommerce": {   //added for test
                            "currencyCode": "RUB",    
                            "add": {
                                "products": [
                                    {
                                        "id": '' + product_id + '',
                                        "name": '' + json['name'] + '',
                                        "quantity": 1
                                    }
                                ]
                            }
                        }
                    });
                    // СКРИПТ КОТОРЫЙ ПУШИТ ПРИ ДОБАВЛЕНИИ


					//$('html, body').animate({ scrollTop: 0 }, 'slow');

					$('#cart').load('index.php?route=common/cart/info #cart .load');
					$('#currentTotal').text(json['subtotal']);
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		});
	},
	'update': function(key, quantity) {
		$.ajax({
			url: 'index.php?route=checkout/cart/edit',
			type: 'post',
			data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
			dataType: 'json',
			beforeSend: function() {
				
			},
			complete: function() {
				
			},
			success: function(json) {
				// Need to set timeout otherwise it wont update the total
				setTimeout(function () {
					$('.header-item.cardIcon span').html(json['total_cart']);
				}, 100);

				if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
					location = 'index.php?route=checkout/cart';
				} else {
					$('#cart').load('index.php?route=common/cart/info #cart .load');
					$('#currentTotal').text(json['subtotal']);
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		});
	},
	'remove': function(key) {
		$.ajax({
			url: 'index.php?route=checkout/cart/remove',
			type: 'post',
			data: 'key=' + key,
			dataType: 'json',
			beforeSend: function() {
				
			},
			complete: function() {
				
			},
			success: function(json) {
                // СКРИПТ КОТОРЫЙ ПУШИТ ПРИ УДАЛЕНИИ
                dataLayer.push({   //added for test
                    'event': 'removeFromCart',   
                    'ecommerce': {      
                    'remove': {                                 
                        'products': [{                        
                            'name': '' + json['name'] + '',           
                            'id': '' + key + ''                         
                    }]      
                    }   
                } 
                });
                // СКРИПТ КОТОРЫЙ ПУШИТ ПРИ УДАЛЕНИИ
                
				// Need to set timeout otherwise it wont update the total
				setTimeout(function () {
					$('.header-item.cardIcon span').html(json['total_cart']);
				}, 100);
				
				var now_location = String(document.location.pathname);

				if ((now_location == '/cart/') || (now_location == '/checkout/') || (getURLVar('route') == 'checkout/cart') || (getURLVar('route') == 'checkout/checkout')) {
					location = 'index.php?route=checkout/cart';
				} else {
					$('#cart').load('index.php?route=common/cart/info #cart .load');
				}
				if($('#custom-cart').length){
					custom_block.render('cart');
					custom_block.render('total');
					$('#currentTotal').text(json['subtotal']);
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		});
	}
}

 

Я думал мб что не так с конструкцией которую пушу при добавлении товара в корзину (хотя по идее должно быть пофиг)... но все тщетно ((

В общем странная штука.. не понимаю в чем проблема

Изменено пользователем 5_minutes_Turkish
Ссылка на комментарий
Поделиться на других сайтах


неоднократно встречал в разных шаблонах свой собственный "add" в корзину. Там же суть просто "аякснуть" на 

index.php?route=checkout/cart/add

Делают для того, чтобы не вносить правки в в стандартный common.js

Копайте в этом направлении. 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

On 7/9/2022 at 5:28 PM, nogocuHoBuk said:

неоднократно встречал в разных шаблонах свой собственный "add" в корзину. Там же суть просто "аякснуть" на 

index.php?route=checkout/cart/add

Делают для того, чтобы не вносить правки в в стандартный common.js

Копайте в этом направлении. 

 

Спасибо! 

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.