dle-modules / DLE-UniForm

Универсальные формы обратной связи для DataLife Engine
http://pafnuty.name/modules/159-uniform.html
MIT License
22 stars 12 forks source link

реализация работы с целями в Яндекс.Метрики и Google analitics #37

Open tcse opened 7 years ago

tcse commented 7 years ago

Часто клиенты хотят настроить получение статистики из Яндекс.метрики по действиям с формами.

Обычно для это создают две цели на каждую форму:

Сейчас подключение для каждой из форм представляет из себя добавления JS в шаблоне form.tpl

<button class="uf-btn ladda-button" type="submit" data-style="zoom-out"onclick="yaCounter123456789.reachGoal('ZajavkaFormyPredzakazAvtomobilja'); return true;"><span class="ladda-label">Отправить</span></button>

и в теле шаблона новости (fullstory.tpl или main.tpl или shortstory.tpl )

<a href="#" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "preorder", "fields":{"title": "{title}", "price": "[xfvalue_price]", "full-link": "{full-link}"}}' onclick="yaCounter123456789.reachGoal('OtkrytieFormyPredzakazAvtomobilja'); return true;">ссылка</a>

вроде ничего сложного, но не красиво.

Нужна реализация более простая при которой нужно быобы указывать только yaCounter123456789 (или его аналог в гугле) и id цели (типа: OtkrytieFormyPredzakazAvtomobilja )

javer-sh commented 5 years ago

Добрый день! Тоже хочу реализовать подсчет целей в форме.

Я этот код: <script type='text/javascript'>window.onload = function() {yaCounter123456789.reachGoal('URA_123456');}</script>

Вставляю между: [success] сюда [/success] но почему то не считает цели, почему?

У меня вот так выглядит:

[success]
<div class="uf-content"><b>Спасибо за обращение!</b></div>
<script type='text/javascript'>window.onload = function() {yaCounter123456789.reachGoal('URA_123456');}</script>
[/success]
pafnuty commented 5 years ago

@javer-sh попробуйте так: Тут проверка на существование функции yaCounter123456789 и выполнение её. код с window.onload работать не будет т.к. window.onload - это событие загрузки страницы, а на момент отправки сообщения это событие уже давно выполнено :)

[success]
<div class="uf-content"><b>Спасибо за обращение!</b></div>
<script type='text/javascript'>
if ($.isFunction(yaCounter123456789)) {
  yaCounter123456789.reachGoal('URA_123456');
}
</script>
[/success]
javer-sh commented 5 years ago
[success]
<div class="uf-content"><b>Спасибо за обращение!</b></div>
<script type='text/javascript'>
if ($.isFunction(yaCounter123456789)) {
  yaCounter123456789.reachGoal('URA_123456');
}
</script>
[/success]

Этот код тоже не работает!

pafnuty commented 5 years ago

@javer-sh попробуйте убрать обёртку и оставить только yaCounter123456789.reachGoal('URA_123456'); так же нужно убедиться, что 1) метод $.isFunction есть в вашей библиотеке jquery и выполняется корректо. 2) я.метрика не заблокирована адблокером. 3) объект yaCounter123456789 существует. 3) функция yaCounter123456789.reachGoal существует.

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

tcse commented 5 years ago

попробуйте сделать аналогично моему способу.

цель для Я.Метрики создаем две штуки. Первая - на запуск формы. Вторая - на отправку формы.

кнопка отправки выглядит так

кнопка открытия формы, примерно вот так

Заказать звонок

3 сент. 2019 г., в 19:17, javer-sh notifications@github.com написал(а):

[success]

Спасибо за обращение!

[/success] Этот код тоже не работает!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/dle-modules/DLE-UniForm/issues/37?email_source=notifications&email_token=AAX7CM7MDAT2YRWI7XFYQALQH2EYLA5CNFSM4CQZPI7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5YXY6I#issuecomment-527531129, or mute the thread https://github.com/notifications/unsubscribe-auth/AAX7CMZ4VZAISSE26H7YO3LQH2EYLANCNFSM4CQZPI7A.