Битрикс (Bitrix)
Данная инструкция предназначена для CMS Битрикс версии 17.0 со стандартной темой магазина.
Процесс установки трекинг-кодов для других модификаций, версий и тем может отличаться.
Необходимо скопировать шаблоны компонентов main.include, catalog, catalog.item, catalog.element, sender.subscribe, sale.order.ajax из папки:
/bitrix/components/bitrix/названиекомпонента_/templates/ (там находится стандартный шаблон с названием .default) в папку:
/bitrix/templates/шаблонсайта/components/_namespace/названиекомпонента/названиешаблона (namespace обычно имеет значение bitrix), далее редактировать копии.
Основной трекинг-код системы
Данный трекинг-код необходимо установить так, чтобы он срабатывал на всех страницах сайта.
Создайте в папке вашего шаблона папку js, в ней файл retailrocket.js со следующим содержанием:
<script type="text/javascript">
var rrPartnerId = "PartnerId";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
где "PartnerId" – идентификатор партнера в системе Retail Rocket.
Затем в файл:
/bitrix/templates/шаблонсайта/components/_namespace/main.include/названиешаблона_/template.php
Добавьте следующую строку:
$this->addExternalJS(SITE_TEMPLATE_PATH . "/js/retailrocket.js");
Трекинг-код просмотра карточки товара
Данный трекинг-код необходимо установить на страницах всех товаров.
В файл:
/bitrix/templates/шаблонсайта/components/_namespace/catalog.element/названиешаблона_/template.php
Вставьте код:
<?php
print '<script type="text/javascript">
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { ';
$resOffers = CCatalogSKU::getOffersList($arResult["ID"]);
if ($resOffers[$arResult["ID"]]) {
foreach ($resOffers[$arResult["ID"]] as $arItem) {
$skus[] = $arItem["ID"];
}
$skuList = implode(",", $skus);
print 'try{ rrApi.groupView([' . $skuList . ']); } catch(e) {}';
}
else {
print 'try{ rrApi.view(' . $arResult["ID"] . '); } catch(e) {}';
}
print ' })
</script>';
?>
Где:
- $arResult["ID"] - ID товара (должен совпадать с ID, передаваемом в YML).
- $skuList - строка, содержащая ID торговых предложений (нужно только в случае, если на сайте используются "торговые предложения", и только, если Вы хотите учитывать их в YML как отдельные товары, каждый со своим ID)
Пример:
При наличии быстрого просмотра перейдите по пути templates/views/products и откройте файл quick_view.tpl
В данном файле после открывающего тега <div> поместите данный код:
<script type="text/javascript">
rrApiOnReady.push(function() {
try{ rrApi.view({$product.product_id}); } catch(e) {}
})
</script>
Пример:
Примечание
Если на сайте реализованы всплывающие окна для быстрого просмотра товара, то трекинг-код rrApi.view() необходимо дополнительно установить в шаблон для этого окна.
Трекинг-код просмотра товарной категории
Данный трекинг-код необходимо установить на всех страницах товарных категорий и подкатегорий.
В файл:
/bitrix/templates/шаблонсайта/components/_namespace/catalog/названиешаблона_/section.php
Вставьте код:
<script type="text/javascript">
<?php $arResult['SECTION_ID'] = CIBlockFindTools::GetSectionID( $arResult['VARIABLES']['SECTION_ID'], $arResult['VARIABLES']['SECTION_CODE'], array('IBLOCK_ID' => $arParams['IBLOCK_ID']) ); ?>
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() {
try { rrApi.categoryView(<?=$arResult['SECTION_ID']?>); } catch(e) {}
})
</script>
Где:
<?=$arResult['SECTION_ID']?> - числовой ID товарной категории (должен совпадать с атрибутом id тега <category>, передаваемом в YML-файле).
Пример:
Трекинг-код добавления товаров в корзину
Для каждого товара, на кнопках добавления товаров в корзину необходимо установить трекер добавления в корзину.
В 2 файла:
/bitrix/templates/шаблонсайта/components/_namespace/catalog.item/названиешаблона/script.js
/bitrix/templates/шаблонсайта/components/namespace/catalog.element/названиешаблона_/script.js
В функции initBasketUrl() внутри условия switch (this.productType) после следующей строки:
case 2: // set
Вставьте строку:
try { rrApi.addToBasket(this.product.id) } catch(e) {};
А после строки:
case 3: // sku
Вставьте строку:
try { rrApi.addToBasket(this.offers[this.offerNum].ID) } catch(e) {};
Пример:
Где:
- this.product.id - ID товара;
- this.offers[this.offerNum].ID - ID "торгового предложения" (если они используются на сайте).
ID должны совпадать с ID, передаваемыми в YML;
Примечание
Если на сайте реализованы всплывающие окна для быстрого просмотра товаров, в которых есть кнопка для добавления в корзину, то трекинг-код rrApi.addToBasket() необходимо дополнительно установить на кнопку в шаблоне для этого окна.
Трекинг-код совершения транзакции
На финальной странице оформления заказа (на которой пользователю сообщают о том, что заказ сформирован, благодарят за покупку) необходимо установить трекинг-код совершения транзакции.
В файл:
/bitrix/templates/шаблонсайта/components/_namespace/sale.order.ajax/названиешаблона_/template.php
Вставьте код:
if($arResult['ORDER_ID']){
$transactionIdVal = $arResult['ORDER_ID'];
print "
<script type='text/javascript'>
rrApiOnReady.push(function() {
try {
rrApi.order({
transaction: $transactionIdVal,
items: [
";
$res = CSaleBasket::GetList(array(), array("ORDER_ID" => $arResult['ORDER_ID']));
while ($arItem = $res->Fetch()) {
$mxResult = CCatalogSku::GetProductInfo($arItem['PRODUCT_ID']);
$productIdVal = $mxResult['ID'];
$qntIdVal = $arItem['QUANTITY'];
$priceIdVal = $arItem['PRICE'];
print "{ id: $productIdVal, qnt: $qntIdVal, price: $priceIdVal},";
}
print "
]
});
} catch(e) {}
})
</script>
";
}
Пример:
Где:
- $arResult['ORDER_ID'] - ID транзакции;
- $mxResult['ID'] - ID товара (должен совпадать с ID, передаваемом в YML);
- $arItem['QUANTITY'] - количество единиц товара в заказе;
- $arItem['PRICE'] - цена за единицу товара;
Приведён код для сайта, использующего "торговые предложения".
Примечание
Усли на сайте реализована форма “быстрого” заказа или заказа “в 1 клик”, то трекер rrApi.order() необходимо дополнительно вызывать при совершении заказов через данную форму.
Трекер сбора email
Каждый раз, когда вы получаете email пользователя, исполняйте код:
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail("<user_email>"); });
Где **<user_email>** - email адрес пользователя.
Для установки трекинг-кода email при оформлении заказа:
Создайте в папке вашего шаблона в папке js файл rrSetEmailOrder.js со следующим содержанием:
document.addEventListener("DOMContentLoaded", function(event) {
var mailField = document.querySelector('[autocomplete="email"]');
mailField.addEventListener("blur", function(){
try {rrApi.setEmail(mailField.value);}catch(e){}
});
});
Затем в файл
/bitrix/templates/шаблонсайта/components/_namespace/sale.order.ajax/названиешаблона_/template.php
Добавьте строку:
$this->addExternalJS(SITE_TEMPLATE_PATH . "/js/rrSetEmailOrder.js");
Для установки трекинг-кода email в форме подписки:
В файл:
/bitrix/templates/шаблонсайта/components/_namespace/sender.subscribe/названиешаблона_/template.php
Вставьте код:
onblur="try {rrApi.setEmail(this.value);}catch(e){}"
Как атрибут у 2х полей **, у которых имеется атрибут type="email"**
Важно
Передавайте e-mail только тех пользователей, кто явно разрешил отправлять им письма.
Updated 5 months ago