Виртуальный просмотр страниц GA при перезагрузке веб-формы: есть ли более простой способ?


Я не могу поверить, что это было так трудно.

У меня установлена Веб-форма и Google Analytics . Я хочу отслеживать отправку моей веб-формы, но, поскольку она настроена на перезагрузку текущей страницы при отправке, я должен использовать либо виртуальные просмотры страниц, либо события. Я пошел с первым.

Сначала я думал, что это будет так же просто, как использовать hook_webform_submission_insert()1 и вызов кода GA через drupal_add_js() оттуда, но почему-то это не сработало: сам хук был выполнен, но JS так и не был добавлен на страницу.

Теперь я добрался до нижней части Google и не нашел никакой помощи в этом конкретном случае (похоже, все используют отдельные страницы "спасибо"). Перемотав вперед пару часов, дюжину подходов и сотни страниц, я, наконец, пришел к этому рабочему коду:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  //add custom submit callback
  if ($form_id == 'webform_client_form_[node id here]') {
    $form['#submit'][] = 'mymodule_submit_ga';
  }

  //add GA tracking upon successful submission
  if (isset($_SESSION['mymodule_submission_successful']) &&
      $_SESSION['mymodule_submission_successful'] == TRUE) {
    //reset temporary variable
    unset($_SESSION['mymodule_submission_successful']);
    //build JS
    $script = '(function() {';
    $script .= '_gaq.push(["_trackPageview","[virtual page path here]"]);';
    $script .= '})();';
    //add JS somewhere in the end
    drupal_add_js($script, array("type"=>"inline","group"=>JS_THEME,"weight"=>20));
  }
}

function mymodule_submit_ga($form,&$form_state) {
  //set temporary variable for the code above
  $_SESSION['mymodule_submission_successful'] = TRUE;
}

Я делюсь этим на случай, если это кому-нибудь поможет, но, поскольку я не эксперт по PHP, я не могу избавиться от ощущения, что пропустил что-то действительно простое.

Есть ли более простой способ сделать это?

Author: Pierre.Vriens, 2012-02-05

1 answers

Более простым методом (который не требует кодирования) было бы установить для параметра веб-формы "Местоположение перенаправления" значение "Пользовательский URL" и ввести "узел/%nid?f=my_webform_success".

Это приведет к размещению формы самой по себе, а также позволит вам добавить некоторый уникальный ключ/значение к URL-адресу.

Затем в Google Analytics вы можете установить цель с URL-адресом цели "f=my_webform_success" и Типом соответствия "Соответствие регулярному выражению".

 0
Author: Shannon Murdoch, 2013-01-29 00:22:23