Sat. Dec 14th, 2024

#GTMtips: Declaración de capa de datos vs. .empujar()


He aquí un consejo sobre cómo evitar un error horrible, horrible con Administrador de etiquetas de Google.


incógnita


El boletín a fuego lento

Suscríbete al Boletín a fuego lento para recibir las últimas noticias y contenido de Simo Ahava en su bandeja de entrada de correo electrónico.

Consejo 7: utilice siempre .push() con dataLayer

Cuando asigna un valor a una variable usando el signo igual (=), en realidad está reasignando la variable a un nuevo valor, y el sistema de recolección de basura del entorno de ejecución barre el valor anterior hasta el cielo.

Digámoslo simplemente: si redefines dataLayer después del fragmento del contenedor de GTM, interrumpirá las funciones patentadas de GTM. No, no estoy tratando de ser dramático, es la verdad. Causas estragos porque GTM modifica el nativo push() método que tienen todos los Arrays, añadiendo cosas de poca importancia como ¡Un oyente que activa etiquetas cuando se presiona una tecla de ‘evento’!.

Al redefinir dataLayer tus etiquetas ya no se activarán. ¡Ups!

Pero bueno, estamos a menudo instruido utilizar la asignación de variables al crear dataLayer antes el fragmento del contenedor. ¿Bien? Bueno, sí, eso es lo que se nos indica que hagamos, pero no es necesariamente la mejor práctica. Tener solo una declaración allí funciona de maravilla, pero ¿qué pasa con:

  <script>
    dataLayer = ({
      'businessCriticalVar' : 'businessCriticalVal'
    });
  script>
  ... another code ...
  <script>
    dataLayer = ({
      'anotherCriticalVar' : 'anotherCriticalVal'
    });
  script>
head>
<physique>

Bueno, quizás lo hayas adivinado. La segunda asignación sobrescribe la primera y dataLayer solo tiene otraVarCrítica disponible para el beneficio de sus etiquetas.

Entonces, ¿cómo evitar esto?

Sencillo: utilizar solo push() al interactuar con dataLayer. De esa manera nunca sobrescribirás nada en la matriz, solo agregarás cosas nuevas al closing.

En las etiquetas GTM (HTML personalizado, por ejemplo), puedes seguir adelante y usar dataLayer.push()ya que puedes estar 100% seguro de que dataLayer es una matriz con un push() función (el fragmento del contenedor se encarga de esto por usted). Pero cuando trabajas en la plantilla de página, donde no es necesariamente un hecho que dataLayer se ha definido como una matriz, utilice siempre la siguiente sintaxis para protegerse contra problemas:

window.dataLayer = window.dataLayer || ();
window.dataLayer.push({
  'someVar' : 'someVal'
});

La primera línea básicamente comprueba si una variable international llamada dataLayer ya ha sido declarado. Si es así, se deja en paz y la ejecución continúa hasta el push() bloquear. Si, sin embargo, dataLayer NO se ha definido, la primera línea le asigna una nueva matriz vacía. Esto asegura que lo siguiente push() siempre funcionará.

Así que aquí está el resumen:

  1. Cuando trabaje en la plantilla de página, compruebe siempre si dataLayer se ha definido e inicialícelo como un nuevo Array si es necesario

  2. Siempre, SIEMPRE, usa push() al interactuar con dataLayer

DESCARGO DE RESPONSABILIDAD: El window.dataLayer = window.dataLayer || (); falla si dataLayer SE HA definido pero no como una matriz. Probablemente esto sea bastante raro, pero debe saber qué variable se ha asignado a GTM mirando la fragmentos de contenedor parámetros de función de autoinvocación.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *