Первым делом, советую внимательно прочитать документацию, т.к простого копипаста может быть мало.
Она короткая, понятная и все на русском - http://help.yandex.r.../e-commerce.xml
Очень важно не только объявить переменную yaParams, но и передать её в счетчик. Иначе ничего не получится. Яндекс предлагает два способа оповещения о новом заказе
- по адресу - http://llfl.ru/049e6n
- через событие JS-событие (reachGoal) - http://llfl.ru/0g8hjc
Принцип работы у них схожий, поэтому выбирайте то что вам по душе (опять же читаем документацию по ссылке выше).
Ниже я лишь расскажу как правильно объявить переменную с информацией о заказе, которую мы будем передавать в метрику.
Как вы уже знаете, заказы в 2.2.0 и 2.1.5 резко отличаются друг от друга. Поэтому способ доступа к информации разный. Ниже будет два примера.
JBZoo 2.1.5 и ниже
Свой код я вставил и проверял в файле
media\zoo\applications\jbuniversal\templates\<ШАБЛОН>\renderer\payment_success\_default.php
Это шаблон страницы по умолчанию для "Спасибо" после создания или оплаты заказа.
Внимание! Код ниже предполагает, что у всех товаров в заказе одна и та же валюта. У меня это рубли. У вас может быть что-то другое, например гривны. Главное правильно указать курс.
<?php
$result = array(
'order_id' => $view->order->id,
'order_price' => $view->orderDetails->getTotalPrice(),
'currency' => "RUR", // указать код валюты магазина. В этой валюте должны быть все товары корзины
'exchange_rate' => 1, // курс валюты. Пример 1 у.е. = 35 руб. ===> currency = RUR, exchange_rate = 35.
'goods' => array(),
);
$cartItems = $view->orderDetails->getOrderItems();
foreach ($cartItems as $cartItem) {
$result['goods'][] = array(
'id' => $cartItem['itemId'], // или артикул $cartItem['sku']
'name' => $cartItem['name'],
'price' => $cartItem['price'],
'quantity' => $cartItem['quantity'],
);
}
?>
<script type="text/javascript">
var yaParams = <?php echo json_encode($result); ?>;
// вместо XXXXXX - свой номер счетчика в метрике.
window.onload = function() {
yaCounterXXXXXX.reachGoal('order', yaParams); // вызываем событие "order" в метрике
};
</script>
JBZoo 2.2.0 и выше
Шаблон для вставки кода (для успешной оплаты)
media\zoo\applications\jbuniversal\templates\<ШАБЛОН>\renderer\payment_success\_default.php
Шаблон на создании заказа
media\zoo\applications\jbuniversal\templates\<ШАБЛОН>\renderer\basket-success\index.php
В 2.2.0 появилась продвинутая система управления валютам, поэтому товары могут быть в любой валюте.
Главное. чтобы они все были настроены.
Обратите внимание, что мы отталкиваемся от доллара как "у.е.", поэтому доллар тоже добавьте в настройки сайта.
<?php
/** @var JBCartOrder $order */
$order = $view->order;
$setCurrency = 'RUB';
$total = $order->getTotalSum()->convert($setCurrency);
$rates = $total->getCurList();
$rate = $order->val('1', 'usd'); // 1 у.е относительно доллара (должен быть настроен в валютах!)
$yaParams = array(
'order_id' => $view->order->id,
'order_price' => $total->val(),
'currency' => strtoupper($total->cur()),
'exchange_rate' => $rate->val($setCurrency),
'goods' => array(),
);
$cartItems = $order->getItems(false);
foreach ($cartItems as $cartItem) {
$itemPrice = $order->val($cartItem->get('total'))->convert($setCurrency);
$yaParams['goods'][] = array(
'id' => $cartItem->get('item_id'), // или артикул $cartItem->find('elements._sku')
'name' => $cartItem->get('item_name'),
'price' => $itemPrice->val(),
'quantity' => $cartItem->get('quantity', 1),
);
}
?>
<script type="text/javascript">
var yaParams = <?php echo json_encode($yaParams); ?>;
// вместо XXXXXX - свой номер счетчика в метрике.
window.onload = function() {
if (typeof yaCounterXXXXXX != 'undefined') {
yaCounterXXXXXX.reachGoal('order', yaParams); // вызываем событие "order" в метрике
}
};
</script>
Сообщение отредактировал SmetDenis: 26 June 2015 - 13:42
Небольшие правки, доп адрес шаблона











