Переход на уровень данных, не отображаемый в datalayer

#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, но я могу следовать вместе с кодом в отладчике