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


Фото
* * * * * 3 голосов

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


  • Чтобы отвечать, сперва войдите на форум
45 ответов в теме

#1 JustDavali

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

Опубликовано 10.02.2013 - 12:09

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




Сам код метрики вставляет в 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. ЕСТЬ КОСЯКИ В МОЕМ РЕШЕНИИ, Я САМ ЭТО ЗНАЮ! ВМЕСТО ТОГО, ЧТО БЫ ПИСАТЬ КАК КРИВО Я ПРЕДЛОЖИЛ СДЕЛАТЬ - ВЫЛОЖИТЕ КАК НАДО СДЕЛАТЬ ПРАВИЛЬНО



#2 JustDavali

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

Опубликовано 10.02.2013 - 12:12

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



#3 creatonio

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

Опубликовано 10.02.2013 - 14:11

О, спасибо, как раз вчера разбирался.



#4 nigga

nigga
  • Пользователь
  • 527 сообщений
  • Заказчик
  • Версия CMS:1.x
  • Откуда:Мухоршибирь

Опубликовано 25.02.2013 - 05:01

это ведь для версии 1.4 simpla подойдёт?



#5 JustDavali

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

Опубликовано 25.02.2013 - 05:18

писалось для 2.1.5
для 1.4 - хз, я ее не видел ни разу



#6 bibigontv

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

Опубликовано 26.02.2013 - 08:55

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

что не так?


<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>



#7 JustDavali

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

Опубликовано 26.02.2013 - 10:43

Доставка чугунных ванн в пределах МКАД - это что?
цели настроенны правильно?



#8 bibigontv

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

Опубликовано 26.02.2013 - 12:39

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

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

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



#9 JustDavali

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

Опубликовано 26.02.2013 - 13:03

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

}
		
			{

должна быть запятая, смотрите свой order.tpl и правьте.
и должно стоять
quantity: 1
у доставки.
и по уму считать доставку как проданный товар неправильно на мой взгляд



#10 bibigontv

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

Опубликовано 27.02.2013 - 00:26

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



#11 JustDavali

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

Опубликовано 27.02.2013 - 02:00

если оформить новый заказ через корзину - то 100% в метрике все будет.



#12 bibigontv

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

Опубликовано 27.02.2013 - 02:59

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

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

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



<!-- 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 -->



#13 bibigontv

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

Опубликовано 27.02.2013 - 03:04

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



#14 JustDavali

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

Опубликовано 27.02.2013 - 03:24

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

{if $module != 'OrderView'}



#15 bibigontv

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

Опубликовано 27.02.2013 - 04:05

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

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

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

<?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 } ?>



#16 bibigontv

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

Опубликовано 27.02.2013 - 06:17

не работает!



#17 yoshkin

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

Опубликовано 27.02.2013 - 06:19

Все работает, попробуйте отредактировать у себя вот эту часть, с учетом синтаксиса вашей версии симплы



#18 yoshkin

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

Опубликовано 27.02.2013 - 06:19

<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}
      ]
};



#19 bibigontv

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

Опубликовано 27.02.2013 - 06:30

да мне надо исходники, которые надо засовывать в файл, который хранится в папке compiled, а не в папке шаблона!!!!!!!



#20 yoshkin

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

Опубликовано 27.02.2013 - 06:31

bibigontv, удивляют люди, которым пытаются помочь, а они еще и не довольны.






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых