#javascript #drupal #google-analytics #google-tag-manager
#javascript #drupal #google-analytics #google-tag-manager
Вопрос:
У меня есть класс events,
/** Class representing a Google Analytics Event. */
class AnalyticsEventInterface {
event = {};
getEvent() {
return this.event;
}
}
и конкретное событие, которое расширяет класс events,
class SearchClickEvent extends AnalyticsEventInterface {
/**
* Create a SearchResultClick analytics event.
* @param {string} term - The search result's landing query term.
* @param {string} type - The type of search result's landing with.
* @param {int} page - The page number of the result clicked.
* @param {int} position - The calculated position of the result clicked.
*/
constructor(term, type, page, position) {
super();
this.event.event = 'search_result_click';
this.event.search_term = term;
this.event.search_type = type;
this.event.search_page = page;
this.event.search_position = position;
}
}
это срабатывает при возникновении события click.
(function ($) {
'use strict';
Drupal.behaviors.search_landing_page = function (context) {
//When a search result is clicked a google analytics event is triggered and data collected.
var logSearchClick = function (event) {
var analyticsSettings = null;
if (typeof Drupal !== "undefined" amp;amp; typeof Drupal.settings !== "undefined" amp;amp; typeof Drupal.settings.analytics !== "undefined") {
analyticsSettings = Drupal.settings.analytics;
}
if (analyticsSettings === null) {
// Escape early if we don't have the info that we need.
return;
}
var queryTerm = analyticsSettings.term || null;
var searchType = analyticsSettings.type || null;
var pageNumber = analyticsSettings.page || null;
var $results = $('.c-search-result');
var resultsPerPage = $results.length;
var positionData = $results.data('position');
var positionID = positionData ((pageNumber - 1) * resultsPerPage);
var searchClickEvent = new SearchClickEvent(queryTerm, searchType, pageNumber, positionID);
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(searchClickEvent.getEvent())
}
// Attach the function to the event.
$('.c-search-result').off('click').on('click', logSearchClick);
};
})(jQuery);
При отладке вызываются все строки, и событие выглядит так, как будто оно передается, но когда я проверяю уровень данных в консоли после нажатия на результат поиска, нового события нет в уровне данных. Буду признателен за любую помощь. У меня также нет доступа к GTM клиента.
Комментарии:
1. Можете ли вы рассказать о консоли, для чего возвращается функция «searchClickEvent.getEvent ()»?
2. searchClickEvent.getEvent(); Я получаю неперехваченную ошибку ссылки: searchClickEvent не определен и dataLayer.push({‘event’: ‘event’}); Я получаю undefined, но я могу следовать вместе с кодом в отладчике