Налаштування E-commerce Google Analytics на OpenCart 3.x
- By Yurii
- 04 Apr, 2022
Привіт, інтернет-магазини на платформі Opencart дозволяють швидко розгорнути проект та протестити нішу. Для цього достатньо недорогого шаред-хостингу, який підтримує php5-7 та бази даних SQL. Зазвичай заливають товари від поставщика та запускають Google shopping. Щоб система ефективно працювала необхідно налаштувати відстеження транзакцій та відправку їх до Google Analytics та Google Ads. Звісно є готові модулі, які в кілька кліків дозволяють налаштувати відстеження по повному пансіону. Проте я вам покажу як мінімальними зусиллями налаштувати розширену торгівлю своїми руками.
Формування даних для відстеження транзакцій
Формування масиву даних для відстеження транзакцій я продемострую на базі Brocart Version 3.0.3.6 (bro) з використанням gtag. Для ефективної роботи ремендую одразу встановити Modification Manager, це модуль який дозволяє додавати та вносити правки в плагін.
Перш за все ви маєте встановити код аналітики gtag, який ви знайдете в кабінеті https://analytics.google.com, та увімкнути розширену електронну торгівлю в налаштуваннях представлення. Наступним кроком буде формування модифікатора.
Правки ми будемо вносити до файлів catalog/controller/checkout/success.php та catalog/view/theme/*/template/common/success.twig. В першому ми отримаємо із поточної сесії дані про транзакцію та товари, які були додані до кошика, а в другому люб’язно віддамо ці дані в аналітику.
Щоб стати програмістом не обов’язково ставати програмістом
Щоб зібрати модифікатор нам необхідно мати заготовку, звичайно ви можете скопіювати з якогось іншого модифікатора і внести в нього правки, але я спрощу вам задачу.
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<name><![CDATA[OpenCart Google Enhanced Ecommerce]]></name>
<code>enhanced_ecommerce_plugin</code>
<version>1.0</version>
<author>Nuub</author>
<link>https://seosvit.com.ua</link>
</modification>
Тепер ми маємо отримати дані про транзакцію та підготувати масив даних про товарі, які додані до кошика.
<file path="catalog/controller/checkout/success.php">
<operation>
<search trim="true" ><![CDATA[$this->cart->clear();]]></search>
<add position="before"><![CDATA[
$data['order_id'] = $this->session->data['order_id'];
$data['total'] = $this->cart->getTotal();
$products = $this->cart->getProducts();
$my_feeds = array();
if ($products) {
foreach ($products as $product) {
$my_feeds[] = array(
'name' => html_entity_decode($product['name'], ENT_QUOTES, 'UTF-8'),
'price' => $this->currency->format($product['price'], $this->config->get('config_currency')),
'quantity' => $product['quantity'],
'product_id' => $product['product_id']
);
}
}
$data['feeded'] = $my_feeds;
]]></add>
</operation>
</file>
Наступним кроком зібрані дані необхідно віддати на сторінці Дякую.
<file path="catalog/view/theme/*/template/common/success.twig">
<operation>
<search trim="true" ><![CDATA[{{ header }}]]></search>
<add position="after"><![CDATA[
<!-- Event enhanced ecommerce -->
<script>
setTimeout(function(){
gtag('event', 'purchase', {
"transaction_id": "{{ order_id }}",
"value": {{ total }},
"currency": "UAH",
"items": [
{% for key, item in feeded %}
{
"id": "{{ item.product_id }}",
"name": "{{ item.name }}",
"quantity": {{ item.quantity }},
"price": '{{ item.price }}'
}{% if key < (feeded|length - 1) %},{% endif %}
{% endfor %}
]
});
}, 3000);
</script>
]]></add>
</operation>
</file>
Ви маєто повне право спитати, а якого біса там робить функція setTimeout, слушне питання. Справа в тому, що мій сервер так швидко формував сторінку success, що не встигала провантажитися Гугл Аналітика і мені довелось додати затримку перед тим як віддати дані. Щоб перевірити, які теги завантажуються, вам необхідно встановити додаток Tag Assistant до Chrome, увімкнути його.
Потім необхідно зробити тестове замовлення і перевірити через додаток які теги завантазуються і які дані відправляються в аналітику.