Добавление кода GA для отслеживания заказов (для новой версии API v3)
<?php
AddEventHandler("sale", "OnSaleComponentOrderOneStepFinal", array("ArtmixOrderAjaxHandler", "AddGoogleAnaliticsEcommerceCode"));
class ArtmixOrderAjaxHandler {
/**
* Добавляет код гугл аналитики для остлеживания заказов на страницу (для новой версии API v3)
* Сработает в связке с компонентом sale.order.ajax
*
*/
function AddGoogleAnaliticsEcommerceCode($orderId, $arOrder, $arParams){
global $APPLICATION;
// выходим, если информация о этом заказе уже отправили в гугл
if(isset($_SESSION['GA_ORDER_ID']) && $_SESSION['GA_ORDER_ID'] == $orderId) return;
$ga_output = array();
$arSite = CSite::GetByID($arOrder['LID'])->Fetch();
$ga_output[] = "<script>";
$ga_output[] = "ga('require', 'ecommerce', 'ecommerce.js');";
$ga_output[] = sprintf(
"ga('ecommerce:addTransaction', {
'id': '%s',
'affiliation': '%s',
'revenue': '%s',
'shipping': '%s',
'tax': ''
});",
$orderId,
$arSite['NAME'],
$arOrder['PRICE'],
$arOrder['PRICE_DELIVERY']
);
$dbBasket = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderId)
);
while($basketItem = $dbBasket->fetch()){
$ga_output[] = sprintf(
"ga('ecommerce:addItem', {
'id': '%s',
'name': '%s',
'sku': '%s',
'category': '',
'price': '%s',
'quantity': '%s'
});",
$orderId,
$basketItem['NAME'],
$basketItem['PRODUCT_ID'],
$basketItem['PRICE'],
$basketItem['QUANTITY']
);
}
$ga_output[] = "ga('ecommerce:send');";
$ga_output[] = "</script>";
$APPLICATION->AddHeadString(implode("\n", $ga_output), true);
$_SESSION['GA_ORDER_ID'] = $orderId;
}
}