Помогите настроить цель Метрики в Minishop2
Всем привет. Достаточно тривиальная задача, наверное, кто-то настраивал у себя, но у меня, вот, не получается.
Хочу добавить цель для интернет магазина в Яндекс.Метрике — успешный заказ. Как это делается описано вот здесь: help.yandex.ru/metrika/content/e-commerce.xml
Для того, чтобы передать параметры счетчику используется следующий код:
Возникают вопросы
Хочу добавить цель для интернет магазина в Яндекс.Метрике — успешный заказ. Как это делается описано вот здесь: help.yandex.ru/metrika/content/e-commerce.xml
Для того, чтобы передать параметры счетчику используется следующий код:
var yaParams = {
order_id: "12345",
order_price: 123.45,
currency: "RUR",
exchange_rate: 1,
goods:
[
{
id: "1",
name: "название товара",
price: 100,
quantity: 1
}
]
};
Возникают вопросы
- как пройти по всем товарам, которые есть в корзине, чтобы получить названия и цены всех товаров в заказе?
- На какое событие ставить цель? На клик по кнопке Оформить заказ, вот так?
<button type="submit" name="ms2_action" onclick="yaCounter23103907.reachGoal('ORDER'); return true;" value="order/submit" class="btn submit ms2_link">[[%ms2_frontend_order_submit]]</button>
< Либо на событие: переход на следующую после корзины страницы? Тогда возникает вопрос, если это был заказ с самовывозом, то там формируется ссылка вида ?msorder=idзаказа, но если люди оплачивают (стоит модуль Яндекс.Кассы — mspYaCassa), то там можно самому задавать страницу успешной оплаты, и соответственно, как уже на произвольной странице тогда получить все данные уже оплаченного заказа? Комментарии: 15
Первое с ходу не подскажу. А по поводу второго — необходимо добавить в свои скрипты:
miniShop2.Callbacks.Order.submit.response.success = function () {
yaCounter23103907.reachGoal('ORDER');
}
В смысле просто в шаблон страницы добавить?
<script>
miniShop2.Callbacks.Order.submit.response.success = function () {
yaCounter23103907.reachGoal('ORDER');
}
</script>
А то событие, которое на кнопку повесил, убрать тогда?
Да, событие на кнопке надо убрать, потому что это неправильно. Событие будет срабатывать при любом результате, даже если форма будет с ошибками и заказ не будет оформлен. Что я написал, это обработчик события, когда заказ успешно оформлен.
Можно так и в шаблон добавить, если собственных скриптов нигде нет. В любое место.
Можно так и в шаблон добавить, если собственных скриптов нигде нет. В любое место.
Спасибо, это срабатывает. Но когда я пытаюсь передать к этой цели параметры заказа, то тут уже возникает ошибка!
Вот эта штука уже не работает
Потому что как я понимаю непосредственно заказ формируется несколько позже и я не могу передавать в параметры его плейсхолдеры. Как лучше поступить? Может есть ккой-то другой более подходящий callback?
Вот эта штука уже не работает
miniShop2.Callbacks.Order.submit.response.success = function () {
var yaParams = {
order_id: "[[+num]]",
order_price: [[+cost]],
currency: "RUR"
};
yaCounter23103907.reachGoal('SUCORD', yaParams);
Потому что как я понимаю непосредственно заказ формируется несколько позже и я не могу передавать в параметры его плейсхолдеры. Как лучше поступить? Может есть ккой-то другой более подходящий callback?
Я так подумал, после заказа происходит же переход на страницу с самим заказом. Так может в чанк tpl.msOrder.success добавить этот код. Правда после каждого обновления этой страницы цель будет срабатывать.
Да, наверное, это сработает. Но есть еще загвоздка) пользователь остается на этой странице в случае если он выбрал оплату наличными при самовывозе, если же он собирается платить онлайн, то соответственно переходит на страницу оформления платежа- агрегатор Яндекс касса. как же быть в этом случае?
Я думал после оплаты переходишь на страницу заказа. Честно говоря, с плагином mspYaCassa я не работал, поэтому не могу здесь подсказать что-то.
Замучал тебя, извини)
Я подумал, что можно не загоняться пока с событием заказа, а просто забрать полную стоимость товаров в корзине. Как мне её тогда получить на странице Корзины?
Я подумал, что можно не загоняться пока с событием заказа, а просто забрать полную стоимость товаров в корзине. Как мне её тогда получить на странице Корзины?
У яндекс все вроде написано — github.com/nixsolutions/yandex-php-library/blob/master/src/Yandex/Metrica/Management/GoalsClient.php#L42
Нужно подключить библиотеку и в плагине на оплату заказа можно сделать…
Нужно подключить библиотеку и в плагине на оплату заказа можно сделать…
Спасибо. Моих умений и знаний, к сожалению, недостаточно. Пока повесил просто на событие miniShop2.Callbacks.Order.submit.response.success
Может попозже допетрю как передать параметры заказа или кто-то столкнется с подобной проблемой.
Может попозже допетрю как передать параметры заказа или кто-то столкнется с подобной проблемой.
Подскажите, как в miniShop2.Callbacks.Order.submit.response.success передать данные о совершённом заказе (ID, стоимость, кол-во и пр.)?
Спасибо большое!
Нашёл вчера этот топик. Всё хорошо, только ID заказа там генерируется случайно.
Как достать его из API или из сессии?
Нашёл вчера этот топик. Всё хорошо, только ID заказа там генерируется случайно.
Как достать его из API или из сессии?
miniShop2.Callbacks.Order.submit.response.success = function (response) {
var orderId = response.data.msorder;
}
Просто нужно скобки { } в скрипте отделить пробелами
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.