OpenCart — Добавление Яндекс.Метрики (параметры интернет-магазинов)

Добрый день, уважаемые читатели!

Сегодня я расскажу Вам как интегрировать Яндекс.Метрику в движок OpenCart.

Тут совсем ничего сложного нет, но есть некоторые нюансы.

Начнем с настройки счетчика в Яндекс.Метрике:

Параметры счетчика

Вам нужно включить «Вебвизор» и «Пример использования параметров визитов». Копируем полученный код, и обязательно нажмите на кнопку «Сохранить»!

Далее переходим во вкладку «Цели».

Первой целью для всех магазинов является, чтобы клиент перешел в корзину для оформления заказа; второй целью — страница с сообщением об успешном заказе.

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

Возвращаемся к Метрике — «Цели» -> «Добавить цель» -> «Название»: Корзина; url: {то, что вы скопировали из адресной строки}, потом ставим галочку на «Типы целей интернет-магазинов» и переключатель ставим на «Эта цель описывает корзину на моем сайте»

Настройка целей

Абсолютно тоже самое нужно проделать со второй целью — страницы с сообщением об успешном заказе.

ВНИМАНИЕ

Обратите внимание на URL-страницы. Если неправильно ее заполнить, то статистика не заработает!

Теперь переходим к движку OpenCart и открываем контроллер

/catalog/controller/common/success.php

в нем ищем строчку if (isset($this->session->data[‘order_id’])) {  и после нее вставляем код:

$this->data['order_id'] = $this->session->data['order_id'];
$this->data['store_name'] = $this->config->get('config_name');
$this->load->model('account/order');
$this->data['order_info'] = $this->model_account_order->getOrder($this->session->data['order_id']);
$this->data['order_products'] = $this->model_account_order->getOrderProducts($this->session->data['order_id']);
$tax = 0;
foreach($this->data['order_products'] as $row){
$tax = $tax + $row['tax'];
}
$this->data['tax'] = $tax;

Теперь открываем файл шаблона страницы с сообщением об успешном заказе

/catalog/view/theme/{ВАША_ТЕМА}/template/common/success.tpl

и перед строчкой <?php echo $footer; ?> вставляем код:


<?php if(isset($order_id)) { ?>

<script type="text/javascript">
 var yaParams = {
 order_id: "<?php echo $order_id; ?>",
 order_price: <?php echo round($order_info["total"]); ?>,
 currency: "RUR",
 exchange_rate: 1,
 goods: [
 <?php

$a = 1;

foreach ($order_products as $i => $row) { ?>
 {
 id: "",
 name: "<?php echo htmlentities($row['name'],ENT_COMPAT,'UTF-8'); ?>",
 price: <?php echo round($row["price"]); ?>,
 quantity: <?php echo $row["quantity"]; ?>
 }<?php if($a < count($order_products)) { ?>,<?php } ?>
 <?php $a++; } ?>
 ]
 };
</script>
<?php } ?>

Теперь делаем тестовый заказ и минут через 15 можно посмотреть информацию о заказе в Яндекс.Метрике ->Содержание -> Параметры интернет-магазинов.

Вот и все! Если есть какие-нибудь вопросы — пишите в комментарии

18 комментариев

  1. Данный метод не сработал на моём сайте, правда шаблон у меня не стандартный и там опечатка в пути, checkout пропущено правильный
    /catalog/controller/common/checkout/success.php
    После всех манипуляций у меня открывается пустая страница и заказ не подтверждается((((

  2. Спасибо большое, коротко и ясно все, с вашего мануала почти сразу получилось. Только у меня путь к контроллеру опенкарт был не /catalog/controller/common/success.php (нет там файла нужного), а catalog/controller/checkout/success.php

    Только есть одна проблема, метрика не правильно показывает стоимость товара http://prntscr.com/78e1ux. в шаблоне сообщения успешного заказа менял валюту на UAH http://prntscr.com/78e25u (магазин использует свой курс)
    Подскажите пожалуйста в чем может быть проблема?

    1. а в метрике в этом заказе правильное количество товаров? мб не все товары попали? и скиньте ссылку на сайт либо сюда, либо через форму обратной связи..

      1. Да, в метрике кол-во соответствует заказу. Сайт вот http://fermer-centr.com/
        (немного разобрался, он в у.е. показывает стоимость в метрике (округленно))

        Мне кажется проблема из-за того, что цены товаров в админке установлены в у.е.
        В настройках стоит гривна по умолчанию (и на сайте так же отображение в грн), но цены заводил в у.е., чтобы в зависимости от курса менять

  3. Друзья, подскажите, как тоже самое сделать на опенкарт 2.0? Интересует вопрос после слов — Теперь переходим к движку OpenCart и открываем контроллер

  4. Добрый день! Выполнила все инструкции, но никаких данных в метрике не появилось. Подскажите, может нужно установить на сайт код счетчика самой метрики? Если да, то подскажите где это правильнее сделать.

    1. Добрый вечер. нужно установить код, который яндекс дает для установки на сайт. Установить можно либо после закрытия тега либо перед закрытием тэга

Leave a Reply