PHP

3 шага по установке Google Analytics на 1С-Битрикс Бизнес

В последнее время стало очень популярно устанавливать на свой сайт счетчик Google Analytic. Особенно интересные возможности GA дает для аналитики Интернет-Магазинов. (Возможно эти тему я затрону в одной из будущих статей в блоге.)

В этой статье я хочу рассказать:

  1. как установить код счетчика на сайте (рассматривается, как пример, CMS 1С-Битрикс версия Бизнес),
  2. как настроить счетчик под Рунет,
  3. как настроить функционал электронной коммерции.

Как установить код счетчика на сайте.

Получаем код счетчика без особых проблем: регистрируемся и авторизуемся здесь http://www.google.com/intl/ru/analytics/
затем регистрируете сайт, ga1

после чего на выходе получаете код html счетчикаga2

Его и нужно установить на сайте.

!Помните: В отчете по профилю данные по вашему новому сайту появятся лишь на следующий день.

Где лучше всего установить код на сайте под управлением 1С-Битрикс?

На последнем шаге над окошком с кодом счетчика вы, наверное, обратили внимание на надпись: Copy the following code, then paste it onto every page you want to track immediately before the closing </head> tag. Google рекомендует свой счетчик располагать непосредственно в конце блока <head>. Это и понятно, счетчик сработает сразу же при начале загрузки страницы сайта, и если пользователь прервет загрузку не дождавшись ее окончания, счетчик все-равно сработает.

Но, это не всегда удобно. Бывает так, что нужно в каких-либо компонентах CMS собрать данные для отправки в счетчик, а это невозможно сделать, если счетчик вызван в начале страницы. Поэтому я всегда размещаю код в нижней части страницы, перед закрывающим тегом </body> .

Удобнее всего создать специальную выделенную область под счетчики и ввести его код там. В случае необходимости редактировать код счетчика можно будет администратору сайта через публичную часть сайта.

Вставить нужно перед тегом </body> такой код:

<?$APPLICATION->IncludeFile($APPLICATION->GetTemplatePath(«include_areas/counters.php»),Array(),Array(«MODE»=>»html»));?>

Затем нужно создать в папке include_areas вашего шаблона файл counters.php и записать в него код счетчика GA:

<script type=»text/javascript»>

var _gaq = _gaq || [];
_gaq.push([‘_setAccount’, ‘UA-XXXXXXX-X’]);

_gaq.push([‘_trackPageview’]);

(function() {

var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;

ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;

var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
}
)();

</script>

Вот и все. Через некоторое время Google поймет, что на вашем сайте есть счетчик. Сайт не помешает несколько раз перезагрузить.

ga3

Как настроить счетчик под Рунет?

В нашем российском интернете есть свои поисковые машины, свои товарные площадки. Не мешает GA объяснить на каком пространстве он работает. Для этого нужно несколько дополнить код:

<script type=»text/javascript»>

var _gaq = _gaq || [];
_gaq.push([‘_setAccount’, ‘UA-XXXXXXX-X’]);
_gaq.push([‘_trackPageview’]);

// Поиск картинок
_gaq.push([‘_addOrganic’, ‘images.yandex.ru’, ‘q’, true]);

// Поиск по блогам
_gaq.push([‘_addOrganic’, ‘blogsearch.google.ru’, ‘q’, true]);
_gaq.push([‘_addOrganic’, ‘blogs.yandex.ru’, ‘text’, true]);

// Товарные площадки России (поиск по товарам и прайсам)
_gaq.push([‘_addOrganic’, ‘market.yandex.ru’, ‘text’, true]);

_gaq.push([‘_addOrganic’, ‘price.ru’, ‘pnam’]);

_gaq.push([‘_addOrganic’, ‘tyndex.ru’, ‘pnam’]);
_gaq.push([‘_addOrganic’, ‘torg.mail.ru’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘tiu.ru’, ‘query’]);

_gaq.push([‘_addOrganic’, ‘tech2u.ru’, ‘text’]);
_gaq.push([‘_addOrganic’, ‘goods.marketgid.com’, ‘query’]);

_gaq.push([‘_addOrganic’, ‘poisk.ngs.ru’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘sravni.com’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘e-katalog.ru’, ‘search_’]);

// Поисковики России
_gaq.push([‘_addOrganic’, ‘go.mail.ru’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘nova.rambler.ru’, ‘query’]);

_gaq.push([‘_addOrganic’, ‘nigma.ru’, ‘s’]);
_gaq.push([‘_addOrganic’, ‘webalta.ru’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘aport.ru’, ‘r’]);
_gaq.push([‘_addOrganic’, ‘poisk.ru’, ‘text’]);
_gaq.push([‘_addOrganic’, ‘km.ru’, ‘sq’]);
_gaq.push([‘_addOrganic’, ‘liveinternet.ru’, ‘ask’]);
_gaq.push([‘_addOrganic’, ‘quintura.ru’, ‘request’]);
_gaq.push([‘_addOrganic’, ‘search.qip.ru’, ‘query’]);
_gaq.push([‘_addOrganic’, ‘gde.ru’, ‘keywords’]);
_gaq.push([‘_addOrganic’, ‘gogo.ru’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘ru.yahoo.com’, ‘p’]);

// Поисковики Белоруссии

_gaq.push([‘_addOrganic’, ‘akavita.by’, ‘z’]);

_gaq.push([‘_addOrganic’, ‘tut.by’, ‘query’]);
_gaq.push([‘_addOrganic’, ‘all.by’, ‘query’]);

// Поисковики Украины
_gaq.push([‘_addOrganic’, ‘meta.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘bigmir.net’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘i.ua’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘online.ua’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘a.ua’, ‘s’]);

_gaq.push([‘_addOrganic’, ‘ukr.net’, ‘search_query’]);

_gaq.push([‘_addOrganic’, ‘search.com.ua’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘search.ua’, ‘query’]);
_gaq.push([‘_addOrganic’, ‘search.ukr.net’, ‘search_query’]);

// Товарные площадки Украины (поиск по товарам и прайсам)
_gaq.push([‘_addOrganic’, ‘market.meta.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘sravni.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘shop.bigmir.net’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘av.hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘bt.hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘dom.hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘sport.hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘auto.hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘hotline.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘e-katalog.com.ua’, ‘search_’]);

_gaq.push([‘_addOrganic’, ‘svitpokupok.com’, ‘q’]);

_gaq.push([‘_addOrganic’, ‘search.topping.com.ua’, ‘query’]);
_gaq.push([‘_addOrganic’, ‘searchcat.mytop-in.net’, ‘search’]);
_gaq.push([‘_addOrganic’, ‘hit24.com.ua’, ‘sw’]);
_gaq.push([‘_addOrganic’, ‘hotsale.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘shop.i.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘catalog.i.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘price-list.in.ua’, ‘word’]);
_gaq.push([‘_addOrganic’, ‘pay.ua’, ‘q’]);
_gaq.push([‘_addOrganic’, ‘hotprice.ua’, ‘s_text’]);

(function() {
var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;

ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;

var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
}
)();

</script>

Как настроить функционал электронной коммерции.

GA предоставляет замечательный механизм сбора статистики по покупкам в вашем интернет-магазине, и включается он всего путем установки одной галки в профиле сайта в GA. Единственная проблема, что после этого еще нужно разместить специальный дополнительный код на сайте, отслеживающий покупки, который непрограммист составить не сможет.

Мне приходилось делать этот код для 1С-Битрикс редакция Бизнес и теперь я поделюсь им с вами.

Для начала нужно создать свой шаблон для компонента bitrix:sale.order.full, который отвечает за процедуру оформления заказа. И в файле step6.php созданного шаблона (этот файл шаблона подключается после подтверждения покупки) добавить такой код:

<?

$arFilter = Array(

«ID» => $arResult[«ORDER_ID»],
);

$db_sales = CSaleOrder::GetList(array(«DATE_INSERT» => «ASC»), $arFilter);
while ($ar_sales = $db_sales->Fetch())
{
CModule::IncludeModule(‘sale’);
$arLocs = CSaleLocation::GetByID(getOrderPropValue($arResult[«ORDER_ID»], 1));
$city = getOrderPropValue($arResult[«ORDER_ID»], 6);

$_REQUEST[«ECOMMERSE»] = «_gaq.push([‘_addTrans’,
‘».$ar_sales[‘ID’].»‘,
Название магазина‘,
‘».$ar_sales[«PRICE»].»‘,
»,
‘».$ar_sales[«PRICE_DELIVERY»].»‘,
‘».$city.»‘,
‘».trim($arLocs[«CITY_NAME»]).»‘,
‘».$arLocs[«COUNTRY_NAME»].»‘
]);»;

$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
array(
«NAME» => «ASC»,
«ID» => «ASC»
),
array(
«ORDER_ID» => $ar_sales[‘ID’]
),
false,
false,
array(«ID», «CALLBACK_FUNC», «MODULE»,
«PRODUCT_ID», «QUANTITY», «DELAY»,
«CAN_BUY», «PRICE», «WEIGHT»)
);
while ($arItems = $dbBasketItems->Fetch())
{
$res2 = CIBlockElement::GetByID($arItems[«PRODUCT_ID»]);
$ar_res2 = $res2->GetNext();

$res3 = CIBlockSection::GetByID($ar_res2[«IBLOCK_SECTION_ID»]);
$ar_res3 = $res3->GetNext();

$_REQUEST[«ECOMMERSE»] .= «_gaq.push([‘_addItem’,
‘».$ar_sales[‘ID’].»‘,
‘».$arItems[‘ID’].»‘,
‘».$ar_res2[‘NAME’].»‘,
‘».$ar_res3[‘NAME’].»‘,
‘».$arItems[‘PRICE’].»‘,
‘».$arItems[‘QUANTITY’].»‘
]);»;

}

$_REQUEST[«ECOMMERSE»] .= «_gaq.push([‘_trackTrans’]);»;

}

?>

Для работы этого кода требуется наличие в файле /bitrix/php_interface/init.php такой функции:

function getOrderPropValue($ORDER_ID, $PROPS_ID)
{
CModule::IncludeModule(’sale’);
$db_order = CSaleOrder::GetList(
array(),
array(”ID” => $ORDER_ID)
);
while ($arOrder = $db_order->Fetch())
{
$db_props = CSaleOrderProps::GetList(
array(”SORT” => “ASC”),
array(
“PERSON_TYPE_ID” => $arOrder[«PERSON_TYPE_ID»],
)
);
while ($arProps = $db_props->Fetch())
{
$db_vals = CSaleOrderPropsValue::GetList(
array(),
array(
“ORDER_ID” => $ORDER_ID,
“ORDER_PROPS_ID” => $PROPS_ID
)
);
if ($arVals = $db_vals->Fetch())
return $arVals[«VALUE»];
}
}
}

Как вы можете видеть из кода, код, генерируемый для GA Электронной коммерции помещается в $_REQUEST[«ECOMMERSE»] . Далее этот код включается в коде счетчика GA примерно так:

<script type=»text/javascript»>

var _gaq = _gaq || [];
_gaq.push([‘_setAccount’, ‘UA-XXXXXXX-X’]);

_gaq.push([‘_trackPageview’]);

<?=$_REQUEST[«ECOMMERSE»]?>

(function() {

var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;

ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;

var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
}
)();

</script>

Если Вы все сделали правильно, то на следующие сутки в отчете в GA появятся данные по электронной коммерции.

Комментариев: 10

  1. В коде ошибки нет?

    $_REQUEST[«ECOMMERSE»] = “_gaq.push([‘_addTrans’,
    ‘».$ar_sales[‘ID’].”‘,
    ‘Название магазина‘,
    ‘”.$ar_sales[«PRICE»].”‘,
    ”, <—эти кавычки не лишние? или может они должны закрываться?
    ‘”.$ar_sales["PRICE_DELIVERY"].”‘,
    ‘”.$city.”‘,
    ‘”.trim($arLocs["CITY_NAME"]).”‘,
    ‘”.$arLocs["COUNTRY_NAME"].”‘
    ]);”;

    и еще вопрос, я правильно понял, что: ” = ", а ‘ = ' ?

  2. Глеб, при размещении кода на странице работает фильтр, который заменяет некоторые символы на другие. Например, кавычку на апостроф. При определенном знании php можно распознать как отредактировать код, чтобы он был правильным для php.

  3. Подскажите куда нужно зайти(по шагово)на сайте с 1с битриксом чтоб установить кнопку соц.закладок…Спасибо

  4. Алексей, я думаю, в этом вам поможет компонент bitrix:main.share .
    Его нужно просто расположить в нужной части страницы, либо шаблона сайта.

    Если требуется конкретная помощь, то вы можете обратиться ко мне через форму Обратной связи.

  5. Подскажите подробнее про этот пункт «Как настроить счетчик под Рунет?»
    Гуглил но так и не нашел для чего это нужно, я ставил тот код что есть в стандарте в google analityc , чем будет плюс от этого кода для статистики ?

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

  7. Здравствуйте!
    Вы пишете: «Вставить нужно перед тегом такой код: и т.д.
    Затем нужно создать в папке include_areas вашего шаблона файл перед закрывающим тегом .php и записать в него код счетчика GA.»
    Это все можно сделать в Рабочий стол-Настройки-Настройки продукта-Сайты-Шаблоны сайтов? Перед закрывающим тегом ?
    Или это можно сделать в подвале сайта, где есть поля с возможностью в режиме правки Изменить область?

    1. Лучше всего вставить перед закрывающим тегом — обычно так рекомендуют. Хотя скрипт грузится асинхронно, а это значит, что можно поставить в любом месте и он не будет тормозить загрузку сайта.

Оставить комментарий на андрей Отменить

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

четырнадцать − одиннадцать =