Первым делом, советую внимательно прочитать документацию, т.к простого копипаста может быть мало.
Она короткая, понятная и все на русском - 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
Небольшие правки, доп адрес шаблона