Analytics

Снегоочиститель

Когда шаблоны были выпущены для диспетчера тегов от Google, я обновил мой рабочий процесс для работы с ГТМ. Вместо того, чтобы инстинктивно бросаясь в пользовательский тег в HTML и пользовательских переменных в JavaScript, я начал рассматривать ли специальный скрипт, который необходимо развернуто может быть преобразована в пользовательский шаблон в первую очередь.

При публикации множества шаблонов в галерее сообщества, я всегда проводил время за последние 12 месяцев мастерить на чрезвычайно сложный перевод шаблона: Снегоочиститель аналитика на яваскрипт трекер.

Snowplow

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

В этой статье я познакомлю вас с двумя шаблонами, которые я создал, и я поделюсь с вами некоторыми из философии дизайна с вами. Это была странная поездка, и я нашел себя пропиарил возможностями настраиваемых шаблонов в свои пределы.

Эта статья не руководство для шаблоны. Вы должны обратиться к соответствующей технической документации в таблице ниже.

Шаблон Тип Документация Галерея На Гитхабе
Аналитика Снегоочиститель Тег Ссылка Ссылка Ссылка
Параметры Снегоочистителя Аналитика Переменная Ссылка Ссылка Ссылка

Оглавление

  • Спасибо
  • Тег Шаблон
  • Общий обзор
  • Инициализация тег
  • Основной нюанс с резидентной библиотеки
  • Конфигурация трекер
  • Снегоуборочная машина анализа параметров переменных
  • Недостающие части
  • Строить команду(ы)
  • Параметр Объект
  • Специальные команды
  • Пользовательские команды
  • Расстрельной команды
  • Резюме
  • Спасибо

    Предварительный, предварительная работа по шаблонам делал я, но шаблоны были выпущены для разработки открытых исходных кодов в рамках собственной организации снегопад на Гитхабе. Я считаю, что это жизненно важное значение для поддержания их актуальной и связана с развитием языка JavaScript на трекер.

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

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

    Тег Шаблон

    В снегоочистителе аналитика теге шаблон является довольно добросовестное выполнение полного Снегоочиститель аналитика на трекер на JavaScript библиотека.

    Snowplow

    Сама библиотека напоминает универсальная библиотека аналитика и Matomo (бывший использованием веб) на языке JavaScript для СДК. Эти сходства делают его легче перевести его в шаблон, как мы можем использовать собственный универсальный аналитика шаблон тег для вдохновения.

    Общий обзор

    В общем, когда тег уволили, он проходит через следующие предложения:

    1. Загружает трекер библиотека с резидентной УРЛ-адрес.
    2. Создает глобальное пространство имен для имени метода (подобно тому, как универсального аналитика генерирует га глобальный объект).
    3. Инициализирует новый (или повторно использует существующий) трекер объекта.
    4. Компилирует настройках тега в команду , которая затем передается в глобальный метод.
    5. Библиотека принимает эту команду из очереди, выстраивает его в полезные данные, и передает его на коллектор конечной точки.

    В целом, процесс очень похож на то, как универсального аналитика работает. Самая большая разница на поверхностном-это поделки природа трубопровода. Вам нужно размещать самостоятельно на JavaScript-библиотеку, и вам необходимо построить коллектор самостоятельно.

    Инициализация тег

    Преобразование библиотеки в шаблон-это сложная задача. Много времени необходимо уделять понимание, как работает библиотека, а затем глядя на ограничения пользовательских шаблонов.

    Загрузка библиотеки и инициирует глобальное пространство имен было непросто — injectScript по API-интерфейс обслужен первый, и copyFromWindow / setInWindow комбо второй.

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

    Затем, первый Иккинг сталкивается: инициализация трекер.

    Глобальный метод снегоуборочной машины не имеет функции для проверки существования трекера. Есть способы, чтобы углубиться в объект и искать эту информацию, а потому, что нет официального АПИ для запроса статуса трекера, я не хочу начать разбор объекта без гарантии, что будет работать в будущем.

    Поэтому, чтобы сохранять информацию о трекерах, которые были созданы, я использовал новый глобальный массив, окна._snowplow_trackers. Этот массив хранит все трекеры, которые были инициализированы, и когда тега, имя трекера проверяется на этот список и убедитесь, что трекер уже существует.

    Основной нюанс с резидентной библиотеки

    Существует серьезная проблема с помощью injectScript.

    Потому что меня, как автора шаблона, не имеют понятия о ссылках шаблона пользователи могут загрузить резидентную сценарий, она ложится на шаблон админ, чтобы убедиться, что шаблон разрешения обновляются , когда резидентная библиотека URL-адрес-адрес изменяется.

    Есть инструкция для этого здесь.

    К сожалению, изменение разрешения нарушает галерея ссылке, то есть вы не будете уведомлены об обновлениях шаблона.

    Snowplow

    Я подал запрос в Гугле об этом. Изменения разрешений должны быть отключены от ссылке галерея.

    Конфигурация трекер

    Трекер создавался с необязательным аргументом карте параметров конфигурации.

    Во-первых, я считал, добавив все возможности трекера, как поля в тег. Однако, это привело к серьезным наворотов, и я хотел сохранить тег как мясо, как это возможно (очень сложно, Кстати).

    Тогда я думал, что просто добавление таблицы параметров, где пользователь может ввести пар ключ-значение, которые они хотят.

    Snowplow

    При этом очень функциональный, он имеет некоторые недостатки. Это очень нелогично, и пользователь должен просматривать Снегоочиститель трекер документации для построения правильной карты аргументов.

    Снегоуборочная машина анализа параметров переменных

    Наконец, я решил следить за тем, что универсального аналитика бирка с Гугл Аналитики разные настройки. Параметры переменной другой шаблон, где пользователь может использовать хороший пользовательский интерфейс для настройки отдельных параметров.

    Snowplow

    После того, как переменная была создана, пользователь может добавить его в тег Снегоочиститель через выпадающее меню.

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

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

    Недостающие части

    Есть одна вещь отсутствует в процессе настройки трекера: междоменного связывания. Как это полагается на парсинг из HTML-элементов в обратного вызова, он не мог быть реализован в пользовательском шаблоне из-за ограничений в песочнице по API-интерфейс.

    Можно еще ввести кросс-домен связывания с пользовательский тег html-код. Я также направил запрос в снегоочистителе, где междоменного связывания может быть сделано путем передачи в УСБ селектор строк или слишком узоров с помощью обратного вызова, а не ссылку на сами элементы.

    Строить команду(ы)

    После того, как библиотека загружена трекер и инициализируется (при необходимости), это время, чтобы принять остальные параметры в теге и объединить их в команду.

    Построение команды разделены на три различных типа пользовательских интерфейсов:

    1. Команды с родовой объект параметр.
    2. Команды с особыми условиями.
    3. Пользовательские команды.

    Параметр Объект

    Снегоуборочная машина на трекер на JavaScript использует позиционные аргументы для обработки командной логике. Это означает, что аргументы должны быть предоставлены глобальный метод в определенном порядке, так что их значения соответствуют правильными, полными функциональными аналогами.

    Например, отслеживание объявлений и впечатление требует команды будет составлен такой:

    snowplow_name_here('trackAdImpression',
     '67965967893', // impressionId
     'ПСК', // costModel - 'ква', 'КТК', или 'ПСК'
     5.5, // стоимость
     'http://www.example.com', // targetUrl
     '23', // bannerId
     '7', // zoneId
     '201', // advertiserId
     '12' // campaignId
    );
    

    Имея настройку архитектуры, как это делает жизнь трудной для данного конкретного автора шаблона. Из-за этого, любые именованные аргументы должны быть добавлены в позиционных аргументов. С параметром-объекты, это означает, что пользователь может создать карту параметр через переменную Диспетчер тегов Google в или таблице параметров, и объект будет выглядеть следующим образом:

    {
     impressionId: '67965967893',
     costModel: 'ПСК',
     стоимость: 5.5
    }
    

    Но ведь снегоочистителя использует позиционные аргументы, я не могу просто прикрепить этот объект к вызову. Что бы было красиво элегантный и простой, и будет иметь сокращенный шаблон кода примерно на половину!

    Вместо этого, код должен сопоставить эти именованные параметры для их правильной позиционной аналоги:

    // Псевдокод
    snowplow_name_here('trackAdImpression',
    данных.argMap.impressionId,
    данных.argMap.costModel,
    данных.argMap.стоимость
    );
    

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

    С именованными аргументами, я могу также сделать проверку:

    если (['ква', 'КТК', 'ПСК'].метод метод indexOf(данные.argMap.costModel) === -1) возврат не('неверный "costModel" аргумент в предоставляемых trackAdImpression звоните!');
    

    К сожалению, как уже упоминалось выше, сопоставление именованных параметров на их позиционные аналоги приводит к большому количеству дополнительного кода. Я подал запрос на снегоуборочной машине, а также поддержка аргументы объекта, как бы элегантно решить проблему в целом (и сходится с тем, как универсального аналитика работает, например).

    Специальные команды

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

    Здания эти специальные группы не проблематично как таковой, но были случаи, когда я, упираясь в ограничения пользовательского песочницы шаблона. Например, автоматический трекинг-ссылка позволяет добавить элемент на основе фильтров и контексты вызова. Потому что песочница не позволит вам взаимодействовать с помощью HTML-элементами, с помощью этих функций невозможно.

    Вот почему автоматическая ссылка для отслеживания и форму отслеживания были лишены только для белого списка и черного списка функций.

    Пользовательские команды

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

    Многие из них просто команды без каких-либо аргументов. В таких случаях аргумент команды поле не показали.

    Snowplow

    В других случаях, там есть поле, где пользователь может добавить аргумент(ы).

    Snowplow

    Есть только очень маленькая проверки этих доводов. Как правило, необходимо убедиться, что параметр находится в правильном формате, и с например, enableGdprContext получается через запятую строку в массив.

    Однако, предполагается, что когда пользователь шаблона добавляет пользовательские команды, они либо точно знают, что они делают, или они читают документацию, которая объясняет, как настроить эти вещи.

    В общем, я рекомендую использовать переменные диспетчер вместо жесткого кодирования аргументов. Это делает его легче для переключения на лету при необходимости.

    Расстрельной команды

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

    Например, создаете новый трекер, настройка отслеживания пинга страницы, и отправив просмотров будет в конечном итоге со следующими пунктами добавлены в глобальную очередь на выполнение (в порядке):

    Snowplow

    Резюме

    Построение шаблона было очень познавательное путешествие, и он также помог породить ряд пожеланий для диспетчера тегов от Google для JavaScript на трекер снегоуборочной машины, каждая из которых уверена, что сделает оба решения еще сильнее.

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

    Это была плохая идея.

    Во-первых, есть ограничение что-то вроде 100 полей в любой заданный шаблон. Прежде чем кричать в негодовании, это имеет смысл. Имея бегемот шаблон, навязанный интерфейс каждый раз при создании новой метки или переменной-это не выгодно в Гугле производительности тег менеджера.

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

    Снегоочистителя шаблон большой. Это близко к пределу в 100 местах. Я знаю это, потому что я уперся в предел пару раз и пришлось рефакторить. Если он окажется свиньей производительности, посмотрю я, разбивая ее на более мелкие части (например, один шаблон для наиболее часто используемых событий, другой для отдыха).

    Отделения конфигурации трекер в своей собственной переменной шаблона был шаг к модульности, и в зависимости от обратной связи мы (и я снегоочиститель) Смотрите, если там должно быть больше.

    Я надеюсь, что эта статья была полезна. Я все еще большой поклонник пользовательские шаблоны и твердо верят, они-будущее что менеджмента-тег от Гугла. Надеюсь, что новые API и постоянно появляются в песочнице, как и некоторые ограничения, довольно резкий, особенно когда методы, которые вы ожидаете большинство в JavaScript-библиотек для привлечения блокируются (я смотрю на тебя, в формате json-файле.разбора).

    Если у вас есть отзывы о шаблонах, обязательно поднимите их как вопросы в соответствующих репозиториях: Снегоочиститель аналитика теге шаблон и снегоочиститель анализа параметров переменной шаблона.

    Related posts

    Изучаем контекстную рекламу самостоятельно: большая подборка материалов

    admin

    Как 20-летний паренёк фигачит по 12 часов каждый день уже больше года

    admin

    Издеваемся над USB

    admin

    Leave a Comment