Перейти к содержимому


Как Подключить Функцию Покупки Товара Из Ecommerce Яндекс-Метрики В Шаблоне?

html js ecommerce yandex.metrika

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 04 Апрель 2017 - 11:57

Добрый день, всем! Пожалуйста помогите сделать. Есть следующий js код счетчика яндекс метрики на сайте:
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
	 (function (d, w, c) {
		 (w[c] = w[c] || []).push(function() {
			 try {
				 w.yaCounter20722519 = new Ya.Metrika({
					 id:20722519,
					 clickmap:true,
					 trackLinks:true,
					 accurateTrackBounce:true,
					 webvisor:true,
					 trackHash:true,
					 ecommerce:"dataLayer"
				 });
			 } 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/watch.js";

		 if (w.opera == "[object Opera]") {
			 d.addEventListener("DOMContentLoaded", f, false);
		 } else { f(); }
	 })(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/20722519" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

Как правильно подключить из электронной коммерции Яндес-метрики функцию покупки товара (purchase) в шаблон оформление заказа, чтобы в яндекс метрики отобразился отчет по покупкам товаров?
Пробовал вставлять данный код в шаблон оформления заказа, но отчет в яндекс метрике не отображается:
<script>
function add_purchase() {
dataLayer.push({
	 "ecommerce": {
			 "purchase": {
					 "actionField": {
							 "id" : "{ORDER_FORM_CONTACT_PERSON}"
					 },
					 "products":[ {% FOR cart_items %}
							 {
										 "name": "{cart_items.GOODS_NAME}",
									 "price": {cart_items.ORDER_LINE_PRICE_NOW}
							 }{%IF cart_items.last%}{%ELSE%},{%ENDIF%}
							 {%ENDFOR%}
							 ]
			 }
	 }
});
$(document).ready(function(){
$('.add_button').click(function(){
add_purchase()
});
});
</script>

Аккаунт: SL-343150

#2 MikDark

MikDark

    Активный участник

  • Модераторы
  • 6 468 сообщений

Отправлено 04 Апрель 2017 - 12:28

Просмотр сообщенияdmitry251190 (04 Апрель 2017 - 11:57) писал:

Добрый день, всем! Пожалуйста помогите сделать. Есть следующий js код счетчика яндекс метрики на сайте:
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
	 (function (d, w, c) {
		 (w[c] = w[c] || []).push(function() {
			 try {
				 w.yaCounter20722519 = new Ya.Metrika({
					 id:20722519,
					 clickmap:true,
					 trackLinks:true,
					 accurateTrackBounce:true,
					 webvisor:true,
					 trackHash:true,
					 ecommerce:"dataLayer"
				 });
			 } 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/watch.js";

		 if (w.opera == "[object Opera]") {
			 d.addEventListener("DOMContentLoaded", f, false);
		 } else { f(); }
	 })(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/20722519" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

Как правильно подключить из электронной коммерции Яндес-метрики функцию покупки товара (purchase) в шаблон оформление заказа, чтобы в яндекс метрики отобразился отчет по покупкам товаров?
Пробовал вставлять данный код в шаблон оформления заказа, но отчет в яндекс метрике не отображается:
<script>
function add_purchase() {
dataLayer.push({
	 "ecommerce": {
			 "purchase": {
					 "actionField": {
							 "id" : "{ORDER_FORM_CONTACT_PERSON}"
					 },
					 "products":[ {% FOR cart_items %}
							 {
										 "name": "{cart_items.GOODS_NAME}",
									 "price": {cart_items.ORDER_LINE_PRICE_NOW}
							 }{%IF cart_items.last%}{%ELSE%},{%ENDIF%}
							 {%ENDFOR%}
							 ]
			 }
	 }
});
$(document).ready(function(){
$('.add_button').click(function(){
add_purchase()
});
});
</script>

Аккаунт: SL-343150

Здравствуйте. Пришлите, пожалуйста, ссылку на инструкцию, откуда Вы брали данный код

#3 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 04 Апрель 2017 - 12:38

Код счетчика я взял из настройки Ecommerce на сайте яндекс метрики https://metrika.yandex.ru/promo?

А этот фрагмент кода взял у вас на форуме, из похожего вопроса, но этот блок кода не работает у меня на сайте:

<script>
function add_purchase() {
dataLayer.push({
		 "ecommerce": {
						 "purchase": {
										 "actionField": {
														 "id" : "{ORDER_FORM_CONTACT_PERSON}"
										 },
										 "products":[ {% FOR cart_items %}
														 {
																				 "name": "{cart_items.GOODS_NAME}",
																		 "price": {cart_items.ORDER_LINE_PRICE_NOW}
														 }{%IF cart_items.last%}{%ELSE%},{%ENDIF%}
														 {%ENDFOR%}
														 ]
						 }
		 }
});
$(document).ready(function(){
$('.add_button').click(function(){
add_purchase()
});
});
</script>

Вот отсюда взял данный фрагмент кода:
http://forum.storela...я-в-яндекс-мет/

Отчет в Яндекс-метрике не формируется.

Как исправить данный код, чтобы формировался отчет?

#4 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 04 Апрель 2017 - 13:20

Просмотр сообщенияdmitry251190 (04 Апрель 2017 - 12:38) писал:

Код счетчика я взял из настройки Ecommerce на сайте яндекс метрики https://metrika.yandex.ru/promo?

А этот фрагмент кода взял у вас на форуме, из похожего вопроса, но этот блок кода не работает у меня на сайте:

<script>
function add_purchase() {
dataLayer.push({
		 "ecommerce": {
						 "purchase": {
										 "actionField": {
														 "id" : "{ORDER_FORM_CONTACT_PERSON}"
										 },
										 "products":[ {% FOR cart_items %}
														 {
																				 "name": "{cart_items.GOODS_NAME}",
																		 "price": {cart_items.ORDER_LINE_PRICE_NOW}
														 }{%IF cart_items.last%}{%ELSE%},{%ENDIF%}
														 {%ENDFOR%}
														 ]
						 }
		 }
});
$(document).ready(function(){
$('.add_button').click(function(){
add_purchase()
});
});
</script>

Вот отсюда взял данный фрагмент кода:
http://forum.storela...я-в-яндекс-мет/

Отчет в Яндекс-метрике не формируется.

Как исправить данный код, чтобы формировался отчет?
Здравствуйте, найдите в шаблоне HTML
if (w.opera == "[object Opera]") {
				d.addEventListener("DOMContentLoaded", f, false);
			} else { f(); }
		})(document, window, "yandex_metrika_callbacks");
		  </script>

замените на
if (w.opera == "[object Opera]") {
				d.addEventListener("DOMContentLoaded", f, false);
			} else { f(); }
		})(document, window, "yandex_metrika_callbacks");
		window.dataLayer = window.dataLayer || [];
	</script>

далее в конец шаблоне Товар добавьте
<script>
function add_ecommerce() {
  window.dataLayer.push({
		"ecommerce": {
				"add": {
						"products": [
								{
										"id": "{GOODS_ID}",
										"name": "{GOODS_NAME}",
										"price": {GOODS_MOD_PRICE_NOW},
										"quantity": $('.quantity').val()
								}
						]
				}
		}
});
}
$(document).ready(function(){
$('.add-cart.btn.btn-success.available-now').click(function(){
	add_ecommerce()
});
});
</script>

в конец шаблона Просмотр заказа добавьте
<script>
function add_detail() {
  window.dataLayer.push({
		"ecommerce": {
				 "purchase": {
						"actionField": {
				"id" : "{ORDER_NUM}",
				},
			"products":[ {%FOR order_lines%}
			{% IFNOT order_lines.TYPE_ID=2 %}
								{	   "id": "{order_lines.MOD_ID}",
										"name" : "{order_lines.NAME}",
										"price": {order_lines.LINE_PRICE},
										"quantity": {order_lines.QUANTITY}
								  
								}{%IF order_lines.last%}{%ELSE%},{%ENDIF%}{%ENDIF%}
								{%ENDFOR%}
						]
				}
		}
});
}
$(document).ready(function(){
  add_detail();
});
</script>


#5 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 04 Апрель 2017 - 13:43

А мой фрагмент кода:
<script>
function add_purchase() {
dataLayer.push({
				 "ecommerce": {
												 "purchase": { ...
}
</script>

Должен остаться в шаблоне Оформление заказа?

#6 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 04 Апрель 2017 - 13:53

Просмотр сообщенияdmitry251190 (04 Апрель 2017 - 13:43) писал:

А мой фрагмент кода:
<script>
function add_purchase() {
dataLayer.push({
				 "ecommerce": {
												 "purchase": { ...
}
</script>

Должен остаться в шаблоне Оформление заказа?
В шаблоне Оформления заказа не нужно добавлять ни какого кода.
В инструкции  выше, Вы уже добавить скрипт, который собирает информацию о товаре в корзине.

#7 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 04 Апрель 2017 - 14:06

Просмотр сообщенияИрина345 (04 Апрель 2017 - 13:53) писал:

В шаблоне Оформления заказа не нужно добавлять ни какого кода.
В инструкции  выше, Вы уже добавить скрипт, который собирает информацию о товаре в корзине.

Я все сделал как Вы написали.

Но тогда у меня выводится неправильная информация о товарах в корзине в отчете Товары в корзине на сайте https://metrika.yandex.ru/, к примеру в корзине 1 товар, а в отчете 2 товара и неправильная сумма (на скриншотах это видно).

Ссылки на скриншоты:

http://screenshot.ru/upload/image/zPor

http://screenshot.ru/upload/image/zPoE

Как исправить код, чтобы в отчете выводилась правильная актуальная информация о товарах в корзине?

#8 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 04 Апрель 2017 - 14:42

Просмотр сообщенияdmitry251190 (04 Апрель 2017 - 14:06) писал:

Я все сделал как Вы написали.

Но тогда у меня выводится неправильная информация о товарах в корзине в отчете Товары в корзине на сайте https://metrika.yandex.ru/, к примеру в корзине 1 товар, а в отчете 2 товара и неправильная сумма (на скриншотах это видно).

Ссылки на скриншоты:

http://screenshot.ru/upload/image/zPor

http://screenshot.ru/upload/image/zPoE

Как исправить код, чтобы в отчете выводилась правильная актуальная информация о товарах в корзине?
А Вы уверены, что Вы единственный, кто добавил данный товар в корзину?
Возможно покупатель Вашего сайта одновременно с Вами добавил товар в корзину, поэтому Вы видите, что товар добавлен в корзину.
Скрипт срабатывает при нажатие на кнопку "В корзину" в карточки товара.

#9 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 04 Апрель 2017 - 14:52

Просмотр сообщенияИрина345 (04 Апрель 2017 - 14:42) писал:

А Вы уверены, что Вы единственный, кто добавил данный товар в корзину?
Возможно покупатель Вашего сайта одновременно с Вами добавил товар в корзину, поэтому Вы видите, что товар добавлен в корзину.
Скрипт срабатывает при нажатие на кнопку "В корзину" в карточки товара.

Может быть не единственный, но допустим я добавляю любой товар в корзину при нажатии на кнопку "В корзину" у меня в отчете Товары в корзине на яндекс метрике не появляется добавленный в корзину товар, показывает только старые ранее кем-то добавленные товары в корзину. Как это исправить?

#10 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 05 Апрель 2017 - 12:20

Просмотр сообщенияdmitry251190 (04 Апрель 2017 - 14:52) писал:

Может быть не единственный, но допустим я добавляю любой товар в корзину при нажатии на кнопку "В корзину" у меня в отчете Товары в корзине на яндекс метрике не появляется добавленный в корзину товар, показывает только старые ранее кем-то добавленные товары в корзину. Как это исправить?
Здравствуйте, ранее было установлено срабатывание скрипта после нажатия на кнопку купить, любого нажатия. Даже в том случае когда не выбрана модификация (к примеру размер).
Сейчас Вам установили срабатывание скрипта, когда товар конкретно попадает в корзину. Протестируйте повторно функцию. Дублей быть не должно.

#11 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 05 Апрель 2017 - 12:37

Просмотр сообщенияИрина345 (05 Апрель 2017 - 12:20) писал:

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

Протестировал еще раз, выбрал размер из списка, добавил в корзину товар Перчатки Nike Vapor Grip 3 вратарские жёлто-салатовые, но в отчете в Яндекс метрике он не отобразился, после добавления в корзину. Скриншот прилагаю:

http://screenshot.ru/upload/image/z0CG

#12 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 05 Апрель 2017 - 14:10

Просмотр сообщенияdmitry251190 (05 Апрель 2017 - 12:37) писал:

Протестировал еще раз, выбрал размер из списка, добавил в корзину товар Перчатки Nike Vapor Grip 3 вратарские жёлто-салатовые, но в отчете в Яндекс метрике он не отобразился, после добавления в корзину. Скриншот прилагаю:

http://screenshot.ru/upload/image/z0CG
Возможно требуется время, что бы информация  в яндекс отобразилась.

#13 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 05 Апрель 2017 - 14:13

Просмотр сообщенияИрина345 (05 Апрель 2017 - 14:10) писал:

Возможно требуется время, что бы информация  в яндекс отобразилась.

А как сделать, чтобы информация сразу отображалась в отчете в яндексе? И как сделать, чтобы при удалении товара из корзины, если он существует в отчете, он тоже удалялся?

#14 dmitry251190

dmitry251190

    Пользователь

  • Пользователи
  • PipPip
  • 19 сообщений

Отправлено 05 Апрель 2017 - 15:43

Просмотр сообщенияИрина345 (05 Апрель 2017 - 14:10) писал:

Возможно требуется время, что бы информация  в яндекс отобразилась.

Да вы были правы, действительно требовалось время. Товары добавляются в отчет. Спасибо за помощь

#15 Ирина345

Ирина345

    Активный участник

  • Модераторы
  • 5 709 сообщений

Отправлено 10 Апрель 2017 - 10:31

Просмотр сообщенияdmitry251190 (05 Апрель 2017 - 14:13) писал:

А как сделать, чтобы информация сразу отображалась в отчете в яндексе? И как сделать, чтобы при удалении товара из корзины, если он существует в отчете, он тоже удалялся?
Здравствуйте, на данный момент у Вас установлен код на сайте, для реализации данного функционала. Уточните Ваш вопрос актуален?

#16 apr1or1

apr1or1

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 96 сообщений

Отправлено 05 Сентябрь 2017 - 11:07

Просмотр сообщенияИрина345 (04 Апрель 2017 - 13:20) писал:

Здравствуйте, найдите в шаблоне HTML
if (w.opera == "[object Opera]") {
			 d.addEventListener("DOMContentLoaded", f, false);
		 } else { f(); }
	 })(document, window, "yandex_metrika_callbacks");
</script>

замените на
if (w.opera == "[object Opera]") {
			 d.addEventListener("DOMContentLoaded", f, false);
		 } else { f(); }
	 })(document, window, "yandex_metrika_callbacks");
	 window.dataLayer = window.dataLayer || [];
</script>
После данного изменения, метрика перестаёт работать, на сайте появляется ошибка js и любое добавление товара в корзину, перекидывает в корзину.

А без этого, как я понимаю, всё что идёт далее - не работает





Темы с аналогичным тегами html, js, ecommerce, yandex.metrika

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных