Перейти к содержимому
0 0 ₽ Корзина

Корзина

Загрузка…
0
Обратный звонок
Студия веб дизайна dharma design
Руководство разработчика

Электронная коммерция: устройство

Электронная коммерция (C98) передаёт в счётчики просмотр товара, добавление и удаление из корзины и покупку. Класс Site\Analytics\Ecommerce в ядре собирает нейтральные структуры из уже загруженных данных и передаёт их скрипту media/com_dharmashop/js/ecommerce.js (актив com_dharmashop.ecommerce). Формат — dataLayer Яндекс Метрики; его читают также Google Tag Manager и GA4.

Включение и стоимость

Настройки analytics_ecommerce (по умолчанию 0) и analytics_container (имя массива, по умолчанию dataLayer) находятся на вкладке «Магазин → Аналитика». Выключенная настройка не даёт ни запросов, ни актива, ни данных в странице.

  • Страница товара: новых запросов нет, данные уже загружены.
  • Действие в корзине: два индексных запроса по ключу корзины (снимок до и после).
  • Покупка: один запрос категорий по первичному ключу, один раз за заказ.

События страниц

Ecommerce::emit('detail'|'purchase', …) дописывает событие в настройки скрипта com_dharmashop.ecommerce (events), скрипт отправляет их при загрузке страницы.

  • Product\HtmlView — detail. Цена «по запросу» (ноль без признака «бесплатно») не передаётся.
  • Checkoutcomplete, Payment и Order — purchase через Ecommerce::purchase(). Покупка отправляется один раз на заказ: первая страница, показанная после оформления, ставит отметку ecommerce_sent в данных оформления сессии (com_dharmashop.checkout.receipt); срок — два часа с оформления.

Корзина

Контроллер корзины при включённой настройке и AJAX-запросе сравнивает состав корзины до и после действия (cartSnapshot()) и добавляет в cart.ecommerce ответа {uid, currency, events[]}. Прибавка количества — add, убыль и удаление — remove; передаётся только разница, поэтому очистка корзины, изменение количества и удаление позиции работают одним правилом. Скрипт слушает событие dharmashop:cart-updated; одноразовый uid защищает от повторной отправки одного ответа.

Скрипт подключается там же, где скрипт корзины: CartAssets::use() (карточки, категория, товар, поиск), страница корзины и модуль мини-корзины. Отдельный плагин не нужен: скрипт должен быть на каждой странице с кнопкой корзины, а плагины группы dharmashop загружаются не везде.

Данные товара

Структура товара: id (номер товара, как offer id в фидах), name, price, quantity, category, brand, variant. Пустые поля не передаются. Категория в корзине и покупке — основная; бренд передаётся только в detail.

Другие счётчики

Скрипт посылает в браузере событие dharmashop:ecommerce (detail: action, currency, products, actionField); на него подписывается пиксель соцсети или собственный код. PHP-события нет.

Проверки

  • php dev/check-ecommerce.php — 20 проверок сборщика (товар, разница корзины, имя контейнера).
  • Сценарий на отдельном сайте: detail при загрузке, add и remove из карточки и страницы корзины, purchase после оформления и отсутствие повтора после обновления страницы.

Ограничения

Покупка фиксируется при оформлении, а не при оплате, и только если покупатель вернулся на сайт. Показы и клики по спискам (impressions, click) в первой версии не передаются. Код самого счётчика магазин не добавляет.

Была ли эта статья полезна?

Ваш отзыв помогает нам делать инструкции лучше

✓ Спасибо за ваш отзыв!