Перекопал всю эту базу знаний, ничего кроме "тут несколько раз всё писали" и "мы сделаем вам со скидкой" не нашел. При этом вопрос у людей возникает, и странно, почему было бы не сделать один раз подробное описание, что и куда прописывать. Буду в эту ветку писать всё, что получилось настроить, очень рассчитываю на помощь более опытных участников форума.
Сижу ковыряюсь с подключением yandex ecommerce. Удалось подключить учет просмотра товаров, для этого:
1. Установил в шаблон магазина в перед закрывающим тегом head(можно сразу после открывающего body) код метрики с отслеживанием ecommerce dataLayer( отдельная галочка при формировании кода счетчика) 2. Выше кода метрики в head прописал:
Важно Этот кусок кода должен быть выше кода метрики. Это нужно чтобы инициализировать этот самый dataLayer, в который всё будет собираться раньше, чем о нем спросит код счетчика.
3. Дальше разобрался, как добавить отслеживание в карте товара. В файл product.html(шаблон карты товара) вверху добавил следующую конструкцию:
По результату это позволило мне получить в метрике отображение посещения карт товаров(В метрике > Отчеты > Стандартные > Электронная коммерция > Популярные товары). Это уже что-то.
Осталось два важных участка:
1. Отслеживание добавления/удаления в корзину(пока до конца не понял где) 2. Отслеживание отправки итоговой транзакции(в файле checkout.success.html)
Теперь пытаюсь понять, как правильно сделать dataLayer.push при добавлении в корзину. Подумал, что нужно либо в js-обработчик adding2cart добавить, либо в onClick на кнопку Купить. Ковырял обработчик, но так и не понял как получить там id товара. На этом этапе нужно минимально передать id и quantity вот такой примерно конструкцией:
qantity передаю просто цифрой, так как у меня нет возможности добавлять произвольное количество товара, товар добавляется 1 клик - 1 штук. Понимаю, что вызов {$product.id} в js не будет работать, но никак не пойму, как правильно написать. Буду рад любой помощи.
Этот пост сохранил, если разберусь сам - обязательно допишу до конца, как все получилось. Всем добра!
Как и обещал, пишу в этом треде дальше, что у меня получается.
Напишу здесь один несущественный но, как мне кажется важный момент:
Когда настраиваете статистику, обязательно примите во внимание, что данные в метрике обновляются с небольшим лагом! ДОБАВЛЕНИЕ В КОРЗИНУ
Решил идти путем через onclick. Понятно, что для красоты можно вынести код в функцию, и ее уже вызывать в onclick, Но для наглядности делаю прям по месту. В product.cart.html добавил в input кнопки "Купить" вот такую штуку(оказалось не совсем правильно):
Заработало, стал считать добавления, но неправильно отображал их в статистике метрики - стал показывать id вместо имени. Чтобы все заработало как надо вернул параметр name, получилось так:
От добавления товара (см предыдущую конструкцию) Отличается тем что 'add' заменено на 'remove' и добавлен параметр количетсво, а сам вызов происходит через $item.product, а не через $product
Проверил, вычет из статистики - работает! Правда есть один баг. Если вручную изменить количество товара, а потом нажать удалить, то зачтется вычет измененного количества товаров, а не всего, которое было добавлено изначально. Но думаю что это не самый принципиальный момент, т.к. дальше должен быть checkout-контроль.
Теперь курю в сторону checkout.success.html , но пока не понимаю, как там притянуть данные заказа. Рад буду услышать любую подсказку, но если не дождусь и разберусь сам, также обязательно напишу сюда. Всем пятницы!
Я выбрал немного другой путь. В шаблоне product.cart.html добавил все нужные данные в (data-) параметры <form class="v-products-card-add__form js-add-to-cart" method="post" action="/cart/add/" data-price="11176" data-name="Инженерная доска Coswick Дуб Кедр (Cedar) Таверн 15 мм" data-category="Инженерная доска" data-brand="Coswick">
Далее после загрузки страницы вешается обработчик, привожу свой код:
$('.js-main-columns-center').on('click', '.v-products-card-add__button', function() {
var $element = $(this);
var $form = $element.closest('.v-products-card-add__form');
//передача в ecommerce
dataLayer.push({
'ecommerce': {
'currencyCode': 'RUB',
'add': {
'products': [ {
'id': String($element.data('added-id')),
'name': $form.data('name'),
'price': parseFloat($form.data('price')),
'brand': $form.data('brand'),
'category': $form.data('category'),
'quantity': 1 } ] } } });
//передача события в метрику
ym(62097127,'reachGoal','addtocart');
});
Если в каком либо месте (например в плагине "купить в 1 клик" не хватает данных, например бренда, можно написать собственную функцию. Пример получения характеристики по id товара.
Создаем файл shopMacsol.class.php, название shopMacsol можно поменять на своё (при этом не забыть поменять название класса и вызова).
/wa=apps/shop/lib/classes/shopMacsol.class.php
В файле размещаем код
<?php
class shopMacsol {
// Возвращает массив характеристик по id товара public static function GetProductFeatures($id) {
$model = new shopProductFeaturesModel(); return $model->getValues($id);
}
//Возвращает характеристику по id и её коду. //Если характеристика отсутствует, возрат "Не определен" public static function GetFeature($id,$feature_name){ $features = self::GetProductFeatures($id);
Дело отнюдь не в деньгах. Мы для текущего проекта покупаем программные решения и подороже. Дело в том, что на простой вопрос в нескольких тредах все почему-то стараются уйти от ответа, закрадывается сомнение, что с документацией грусть потому что хочется побольше настругать вот этих 600-700 р.
При том этих денег даже просто на эксперимент не жалко, но начинаешь читать комментарии, а там опять таже песня, толкового описания нет, разработчик направил вон в ту сторону:
Проблема номер раз: отсутствие документации к плагину сказывается на сложности его настройки. Автор дал напутствие: зайдите в GTM, включите триггеры к событиям. Это все хорошо, но, к сожалению, не каждому будет понятно как это сделать. Я разобрался ввиду того, что сам разработчик.
Имхо, это вредит развитию довольно неплохого движка в целом. Очень не хватает аналога wp-kama для вордпресса. https://developers.webasyst.ru/ у меня открыт на соседнем экране. Но у меня не получается найти в нем описания очевидных для каждого интернет магазина вещей. Я все понимаю, что монетизация. Но мы ведь купили в конце концов лицензию, даже партнерку оформили, и идеальной была бы такая ситуация, что в следующий раз на переговорах мы без задней мысли рекомендовали бы клиенту Webasyst + SS не задумываясь о том, что нам придется вновь и вновь читать бесполезные комментарии при разработке нового проекта. Это личное мнение. И я стараюсь исправить ситуацию, чем могу, поэтому пишу подробное описание проблемы, которая судя по истории Хаба возникает у людей периодически, но которую почему-то никто толком так и не осветил.
Поэтому читаем код )
По сабжу, Можете что-то толковое по $order посоветовать? Где посмотреть структуру этого массива с описанием стандартных полей? Если я верно понял именно оттуда надо выьщить состав заказа, для того чтобы отправить финальные метрики.
Извиняюсь, наврал. Вариант рабочий, только кавычки упустил.
Ошибка в 'id' : {$order.id},
Правильно: 'id' : '{$order.id}',
Для полного счастья, осталось к названию товара прикрутить наименование артикула. В "покупке" он автоматом прикручивается в поле $item.name, в остальных случаях его надо как-то добавлять к названию. А то товар при наличии "наименования артикула" (варианты покупки) в метрике считается как разный. Пока мучаюсь.
Уже 2999 руб. с настройкой и 1200 без. Тот же вопрос. 500+ установок, отзывы вроде не плохие но их очень мало... Инструкции по настройке, насколько я понял, кроме этой https://www.webasyst.ru/store/plugin/shop/kmgtm/op... нет?
17 ответов
По шаблону https://yandex.ru/support/metrika/data/e-commerce.... добавляете скрипты для нужной информации. Технически никаких сложностей нет.
Скрипты добавил в файлы
checkout.success.html
cart.html
product.cart.html
product.html
добавлял без {literal}
но сбор статистики не происходит
Перекопал всю эту базу знаний, ничего кроме "тут несколько раз всё писали" и "мы сделаем вам со скидкой" не нашел. При этом вопрос у людей возникает, и странно, почему было бы не сделать один раз подробное описание, что и куда прописывать. Буду в эту ветку писать всё, что получилось настроить, очень рассчитываю на помощь более опытных участников форума.
Сижу ковыряюсь с подключением yandex ecommerce. Удалось подключить учет просмотра товаров, для этого:
1. Установил в шаблон магазина в перед закрывающим тегом head(можно сразу после открывающего body) код метрики с отслеживанием ecommerce dataLayer( отдельная галочка при формировании кода счетчика)
2. Выше кода метрики в head прописал:
Важно Этот кусок кода должен быть выше кода метрики. Это нужно чтобы инициализировать этот самый dataLayer, в который всё будет собираться раньше, чем о нем спросит код счетчика.
3. Дальше разобрался, как добавить отслеживание в карте товара. В файл product.html(шаблон карты товара) вверху добавил следующую конструкцию:
По результату это позволило мне получить в метрике отображение посещения карт товаров(В метрике > Отчеты > Стандартные > Электронная коммерция > Популярные товары). Это уже что-то.
Осталось два важных участка:
1. Отслеживание добавления/удаления в корзину(пока до конца не понял где)
2. Отслеживание отправки итоговой транзакции(в файле checkout.success.html)
Теперь пытаюсь понять, как правильно сделать dataLayer.push при добавлении в корзину. Подумал, что нужно либо в js-обработчик adding2cart добавить, либо в onClick на кнопку Купить. Ковырял обработчик, но так и не понял как получить там id товара.
На этом этапе нужно минимально передать id и quantity вот такой примерно конструкцией:
qantity передаю просто цифрой, так как у меня нет возможности добавлять произвольное количество товара, товар добавляется 1 клик - 1 штук. Понимаю, что вызов {$product.id} в js не будет работать, но никак не пойму, как правильно написать. Буду рад любой помощи.
Этот пост сохранил, если разберусь сам - обязательно допишу до конца, как все получилось. Всем добра!
Как и обещал, пишу в этом треде дальше, что у меня получается.
Напишу здесь один несущественный но, как мне кажется важный момент:
Когда настраиваете статистику, обязательно примите во внимание, что данные в метрике обновляются с небольшим лагом!
ДОБАВЛЕНИЕ В КОРЗИНУ
Решил идти путем через onclick. Понятно, что для красоты можно вынести код в функцию, и ее уже вызывать в onclick, Но для наглядности делаю прям по месту. В product.cart.html добавил в input кнопки "Купить" вот такую штуку(оказалось не совсем правильно):
Заработало, стал считать добавления, но неправильно отображал их в статистике метрики - стал показывать id вместо имени. Чтобы все заработало как надо вернул параметр name, получилось так:
УДАЛЕНИЕ ИЗ КОРЗИНЫ
В файле cart.html Нашел блок <!-- cart item -->
В нем нашел кнопку удаления товара(с классом .delete) из списка и по аналогии с предыдущим примером добавил в нее onclick:
От добавления товара (см предыдущую конструкцию) Отличается тем что 'add' заменено на 'remove' и добавлен параметр количетсво, а сам вызов происходит через $item.product, а не через $product
Проверил, вычет из статистики - работает! Правда есть один баг. Если вручную изменить количество товара, а потом нажать удалить, то зачтется вычет измененного количества товаров, а не всего, которое было добавлено изначально. Но думаю что это не самый принципиальный момент, т.к. дальше должен быть checkout-контроль.
Теперь курю в сторону checkout.success.html , но пока не понимаю, как там притянуть данные заказа. Рад буду услышать любую подсказку, но если не дождусь и разберусь сам, также обязательно напишу сюда.
Всем пятницы!
Я выбрал немного другой путь.
В шаблоне product.cart.html добавил все нужные данные в (data-) параметры
<form class="v-products-card-add__form js-add-to-cart" method="post" action="/cart/add/" data-price="11176" data-name="Инженерная доска Coswick Дуб Кедр (Cedar) Таверн 15 мм" data-category="Инженерная доска" data-brand="Coswick">
Далее после загрузки страницы вешается обработчик, привожу свой код:
Если в каком либо месте (например в плагине "купить в 1 клик" не хватает данных, например бренда, можно написать собственную функцию. Пример получения характеристики по id товара.
Создаем файл shopMacsol.class.php, название shopMacsol можно поменять на своё (при этом не забыть поменять название класса и вызова).
/wa=apps/shop/lib/classes/shopMacsol.class.php
В файле размещаем код
<?php
class shopMacsol
{
// Возвращает массив характеристик по id товара public static function GetProductFeatures($id) {
$model = new shopProductFeaturesModel();
return $model->getValues($id);
}
//Возвращает характеристику по id и её коду.
//Если характеристика отсутствует, возрат "Не определен"
public static function GetFeature($id,$feature_name){ $features = self::GetProductFeatures($id);
return (array_key_exists($feature_name,$features) ? $features[$feature_name] : 'Не определен'); }
}
После сброса кеша в шаблонах станет доступен вызов {shopMacsol::GetProductTypes(product.id,'brand')}
По аналогии можно создавать различные функции вызываемые из шаблона.
Столько действий, чтобы не заплатить 659 руб. :)
Дело отнюдь не в деньгах. Мы для текущего проекта покупаем программные решения и подороже. Дело в том, что на простой вопрос в нескольких тредах все почему-то стараются уйти от ответа, закрадывается сомнение, что с документацией грусть потому что хочется побольше настругать вот этих 600-700 р.
При том этих денег даже просто на эксперимент не жалко, но начинаешь читать комментарии, а там опять таже песня, толкового описания нет, разработчик направил вон в ту сторону:
Имхо, это вредит развитию довольно неплохого движка в целом. Очень не хватает аналога wp-kama для вордпресса. https://developers.webasyst.ru/ у меня открыт на соседнем экране. Но у меня не получается найти в нем описания очевидных для каждого интернет магазина вещей. Я все понимаю, что монетизация. Но мы ведь купили в конце концов лицензию, даже партнерку оформили, и идеальной была бы такая ситуация, что в следующий раз на переговорах мы без задней мысли рекомендовали бы клиенту Webasyst + SS не задумываясь о том, что нам придется вновь и вновь читать бесполезные комментарии при разработке нового проекта. Это личное мнение. И я стараюсь исправить ситуацию, чем могу, поэтому пишу подробное описание проблемы, которая судя по истории Хаба возникает у людей периодически, но которую почему-то никто толком так и не осветил.
Поэтому читаем код )
По сабжу, Можете что-то толковое по $order посоветовать? Где посмотреть структуру этого массива с описанием стандартных полей?
Если я верно понял именно оттуда надо выьщить состав заказа, для того чтобы отправить финальные метрики.
Партнёрам за 325р.
{wa_dumpc($order)} в checkout.success.html или {debug}
Можно (вроде) и {waLog::dump($order, 'dataLayer.log')}
Не разобрался с checkout.success.html?
Тоже мучаю эту тему, пока сделал такой "полурабочий" вариант:
<script type="text/javascript">
dataLayer.push({
'ecommerce' : {
'purchase' : {
'actionField': {
'id' : {$order.id},
},
'products' : [
{foreach $order.items as $item}
{
'name' : '{$item.name|default:" "}',
'id' : '{$item.id}',
'price' : {$item.price},
'quantity' : {$item.quantity}
}
{/foreach}
]}}});
</script>
В итоге, все данные по заказу получает, но в Метрике почему-то не учитываются.
Извиняюсь, наврал. Вариант рабочий, только кавычки упустил.
Ошибка в 'id' : {$order.id},
Правильно: 'id' : '{$order.id}',
Для полного счастья, осталось к названию товара прикрутить наименование артикула. В "покупке" он автоматом прикручивается в поле $item.name, в остальных случаях его надо как-то добавлять к названию. А то товар при наличии "наименования артикула" (варианты покупки) в метрике считается как разный. Пока мучаюсь.
Спасибо огромное за идею с ecommerce. У меня другой движок, но суть оказалась та же самая.
2400 - не хотите!...
Коллеги, добрый день!
Прошу помощи, полностью по вашему сабжу.
На данный момент, плагин на который вы ссылаетесь стоит уже 2399 руб.
По сему, я предполагаю, он стал мега рабочим и полностью решающим все задачи касаемо:
Если не сложно, дайте обратную связь. Работает, а?!
Уже 2999 руб. с настройкой и 1200 без.
Тот же вопрос. 500+ установок, отзывы вроде не плохие но их очень мало...
Инструкции по настройке, насколько я понял, кроме этой https://www.webasyst.ru/store/plugin/shop/kmgtm/op... нет?
Работает
Народ, так что в итоге-то?
что что - плати деньги товарищам)) они все настроят! Инструкций нет нихрена...