#html #google-tag-manager
Вопрос:
У меня есть пользовательский html-тег в моем менеджере тегов Google
<script>const d = 'sdfsf'; console.log(d);</script>
Теперь я хочу sdfsf
быть переменной, переданной в GTM из моего HTML, где у меня есть фрагмент инициализации GTM. Можно ли этого достичь каким-либо образом?
Комментарии:
1. Поскольку вы не объявляете переменную внутри пользовательского HTML-тега, если планируете использовать внешнее значение, это не имеет отношения к вопросу, но пользовательские HTML-теги не поддерживают функции ES6, такие как ключевое слово const (однако пользовательские шаблоны делают это, поскольку они транспилированы. Это одна из причин, по которой вам следует, по возможности, предпочесть пользовательские шаблоны пользовательскому HTML. Еще одна веская причина заключается в том, что это позволяет избежать использования eval).
Ответ №1:
GTM поддерживает использование переменных в GTM. Помимо «обычного» метода слоя данных, уже описанного Ктулху:
window.dataLayer = window.dataLayer || [];
window.datalayer.push({
"event":"upDateD",
"d":"customValueForD"
})
Если в первой строке указано, что переменная уровня данных либо существует, либо объявлена, полезная нагрузка передается как объект, а ключ «событие» напоминает GTM об обновлении внутренних переменных до «d». Становится доступной в качестве переменной в GTM.
Затем вам нужно перейти в раздел «переменные» внутри GTM, выбрать «создать», выбрать тип переменной «Слой данных» и дать ей имя — для сохранения согласованности давайте использовать «d», а затем введите «d» в качестве ключа слоя данных.
Теперь вы можете использовать значение в тегах GTM, заключив имя вашей переменной в двойные фигурные скобки:
<script>console.log({{d}});</script>
Альтернативный способ-использовать тип переменной «Javascript», который вы устанавливаете в имя переменной JS, существующей в глобальном пространстве имен. Вы можете использовать так же, как переменные уровня данных.
Слой данных в основном служит собственным пространством имен, чтобы инкапсулировать имена переменных и избегать конфликтов имен. Если ваша переменная уже существует и используется вне GTM, то я не вижу ничего плохого в том, чтобы сохранить несколько строк и использовать тип переменной «Javascript» (просто убедитесь, что вы не путаете это с типом «Пользовательский Javascript», который позволяет определить анонимную функцию и использовать возвращаемое значение).
Ответ №2:
конечно, может. С событиями слоя данных. Вы помещаете новое событие в слой данных и определенные переменные вместе с ним. В GTM вы объявляете переменные для каждого свойства, к которому хотите получить доступ из GTM, и используете событие в качестве триггера.
Вот, взгляните:https://developers.google.com/tag-manager/devguide это довольно хорошо объясняет.