Korusol
5/31/2014 - 8:44 AM

Добавление кода GA для отслеживания заказов (для новой версии API v3)

Добавление кода 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;
 
    }
 
}