Битрикс (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");
632

Трекинг-код просмотра карточки товара

Данный трекинг-код необходимо установить на страницах всех товаров.

В файл:
/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)

Пример:

818

При наличии быстрого просмотра перейдите по пути templates/views/products и откройте файл quick_view.tpl

В данном файле после открывающего тега <div> поместите данный код:

<script type="text/javascript">
    rrApiOnReady.push(function() {
    try{ rrApi.view({$product.product_id}); } catch(e) {}
    })
</script>

Пример:

828

📘

Примечание

Если на сайте реализованы всплывающие окна для быстрого просмотра товара, то трекинг-код 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-файле).

Пример:

1625

Трекинг-код добавления товаров в корзину

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

В 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) {};

Пример:

835

Где:

  • 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>
  ";
}

Пример:

753

Где:

  • $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");
745

Для установки трекинг-кода email в форме подписки:

В файл:
/bitrix/templates/шаблонсайта/components/_namespace/sender.subscribe/названиешаблона_/template.php

Вставьте код:

onblur="try {rrApi.setEmail(this.value);}catch(e){}"

Как атрибут у 2х полей **, у которых имеется атрибут type="email"**

1806

🚧

Важно

Передавайте e-mail только тех пользователей, кто явно разрешил отправлять им письма.