Jump to content

Настройка Яндекс.Метрики


Recommended Posts

Пару раз в обсуждениях всплывала тема по поводу метрики и ее настройки, а точнее как сделать так что бы метрика считала заказы (суммы и т.д.)




Сам код метрики вставляет в index.tpl вот так:

{if $module != 'OrderView'}
{literal}
<script type="text/javascript">
(function (d, w, c) {
   (w[c] = w[c] || []).push(function() {
       try {
           w.yaCounter*********= new Ya.Metrika({id:**********,
                   webvisor:true,
                   clickmap:true,
                   trackLinks:true,
                   accurateTrackBounce:true,params:window.yaParams||{ }});
       } 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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//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="//mc.yandex.ru/watch/********" style="position:absolute; left:-9999px;" alt="" /></div></noscript>

{/literal}
{/if}



А затем вот такую конструкцию в файл order.tpl

{literal}
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
var yaParams = {
 order_id: "{/literal}{$order->id}{literal}",
 order_price: {/literal}{$order->total_price}{literal}, 
 currency: "RUR",
 exchange_rate: 1,
 goods: 
    [
 {/literal}{foreach $purchases as $purchase}{literal}
       {
         name: "{/literal}{$purchase->product_name|escape}{literal}", 
         price: {/literal}{$purchase->price}{literal},
         quantity: {/literal}{$purchase->amount}{literal}
       } {/literal}
	{if $purchase@last} {else},{/if}
 {/foreach}{literal}
     ]
};
</script>



<script type="text/javascript">
(function (d, w, c) {
   (w[c] = w[c] || []).push(function() {
       try {
           w.yaCounter********* = new Ya.Metrika({id:*********,
                   webvisor:true,
                   clickmap:true,
                   trackLinks:true,
                   accurateTrackBounce:true,params:window.yaParams||{ }});
       } 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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//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="//mc.yandex.ru/watch/***********" style="position:absolute; left:-9999px;" alt="" /></div></noscript>


{/literal}


**** - это ваш ID счетчика метрики
Для того, что бы все работало надо, что бы у вас были настроены цели - корзина и подтверждение заказа

Если хотите настроить дополнительные цели, например что бы метрика считала сколько раз посетители нажали на кнопку "в корзину" с главной страницы, то можно сделать так:

Добавляет цель в метрике, тип "событие"
Идентификатор, например indexADD2CART

Затем открываем main.tpl находим все места где успомнает кнопка "в корзину" и дописываем у них

onclick="yaCounter*******.reachGoal('mainADD2CART'); return true;"


**** - это ваш ID счетчика метрики
Получается что-то вроде этого:

<input type="submit" class="productsMoreBtn" onclick="yaCounter******.reachGoal('mainADD2CART'); return true;" value="Купить" data-result-text="Купить"/>



Теперь каждый раз когда вы или пользователь нажмет на главной странице кнопку "в корзину" в метрике будет засчитываться это как достижение цели.
Таким же образом можно добавить ввиде целей абсолютно все действия на сайте.
Просто нужным элементам добавляем:

onclick="yaCounter*******.reachGoal('ID цели'); return true;"

ID цели - ваш идентификатор, типа indexADD2CART, indexCREDIT, blogADDCOMMENT, productADDCOMMENT и т.д.



p.s. ЕСТЬ КОСЯКИ В МОЕМ РЕШЕНИИ, Я САМ ЭТО ЗНАЮ! ВМЕСТО ТОГО, ЧТО БЫ ПИСАТЬ КАК КРИВО Я ПРЕДЛОЖИЛ СДЕЛАТЬ - ВЫЛОЖИТЕ КАК НАДО СДЕЛАТЬ ПРАВИЛЬНО
Link to post
Share on other sites

То, что написанно выше стоит на нескольких рабочих сайтах.
Поэтому не надо писать, что это не работает - просто подождите немного, метрика не сразу показывает заказы.

Link to post
Share on other sites
  • 2 weeks later...

вроде бы сделали всё по инструкции. вот часть кода скрипта, который удалось вытащить из кода страницы где уже заказ оформлен, а в метрики ничё нет!!!!

что не так?


<script type="text/javascript">var yaParams = {  order_id: "858",  order_price:   6300  ,   currency: "RUR",  exchange_rate: 1,  goods:      [	          {          name: "Полотенцесушитель водяной Energy Classic 600x600 ",           price: 5300,          quantity: 1        }					{	          name: "Доставка чугунных ванн в пределах МКАД",           price: 1000	}      ]};</script>
Link to post
Share on other sites

Доставка чугунных ванн в пределах МКАД - это доставка! а не товар.....

цели настроены правильно:

1. Цель Корзина содержит «/cart» (корзина)
2. Цель Подтверждение заказа содержит «/order» (заказ)
3. оплата и доставка содержит «/sections/oplata_i_dostavka»
4. Контакты содержит «/sections/contacts»
5. О компании содержит «sections/about»

Link to post
Share on other sites

в любом случае между

}
	
		{


должна быть запятая, смотрите свой order.tpl и правьте.
и должно стоять

quantity: 1
у доставки.
и по уму считать доставку как проданный товар неправильно на мой взгляд
Link to post
Share on other sites

вот полный код из одного подтвенрждённого заказа в исходном коде!!!!!!!

посмотрите что в нём не так!!!!!!!!

данных ещё нет!!!!!!



<!-- Yandex.Metrika counter --><script type="text/javascript">var yaParams = {  order_id: "871",  order_price: 3695,   currency: "RUR",  exchange_rate: 1,  goods:      [	          {          name: "название товара1",           price: 3695,          quantity: 1        }		,				{	          name: "название товара2",           price: 0,          quantity: 1	}      ]};</script><script type="text/javascript">(function (d, w, c) {    (w[c] = w[c] || []).push(function() {        try {            w.yaCounter16628108 = new Ya.Metrika({id:16628108,                    webvisor:true,                    clickmap:true,                    trackLinks:true,                    accurateTrackBounce:true,params:window.yaParams||{ }});        } 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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//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="//mc.yandex.ru/watch/16628108" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter -->
Link to post
Share on other sites

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

Link to post
Share on other sites

понЯтно!!!!!!!!!

сделал по другому!

вставил в индекс это, а в ордер как и положено по инструкции

<?php $sv = $_SERVER['REQUEST_URI']; if ($sv == '/order/'.basename($_SERVER['REQUEST_URI'])) { ?><?php } else { ?><!-- Yandex.Metrika counter --><script type="text/javascript">var yaParams = {/*Здесь параметры визита*/};</script><script type="text/javascript">(function (d, w, c) {    (w[c] = w[c] || []).push(function() {        try {            w.yaCounter16628108 = new Ya.Metrika({id:16628108,                    webvisor:true,                    clickmap:true,                    trackLinks:true,                    accurateTrackBounce:true,params:window.yaParams||{ }});        } 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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//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="//mc.yandex.ru/watch/16628108" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter --><?php } ?>
Link to post
Share on other sites

<script type="text/javascript">var yaParams = {  order_id: "{/literal}{$order->id}{literal}",  order_price: {/literal}{$order->total_price}{literal},   currency: "RUR",  exchange_rate: 1,  goods:      [	 {/literal}{foreach $purchases as $purchase}{literal}        {          name: "{/literal}{$purchase->product_name|escape}{literal}",           price: {/literal}{$purchase->price}{literal},          quantity: {/literal}{$purchase->amount}{literal}        } {/literal}		{if $purchase@last} {else},{/if}	 {/foreach}{literal}      ]};
Link to post
Share on other sites

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

А мне надо миллион, скинете? Будьте уважительные к тем кто вам БЕСПЛАТНО помогает. Модератор.

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 2 months later...

А у меня белый лист, неисписано чист.. И в литерал оборачивал и перед закрытием боди, и после открытия, и кэш чистил, и перезагружал 250 раз. Кто-нибудь сталкивался?

 

Забыл в закрывающем литерал «/» поставить..

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...