El píxel de Fb tiene un atributo llamado content_ids
(requerido para Anuncios dinámicos), que requiere una matriz de identificadores de contenido como valor. Es muy posible que esté ejecutando este píxel en un sitio que ya tiene Comercio electrónico mejorado para Common Analytics implementado y ahora desea utilizar los mismos datos de comercio electrónico mejorado que sus desarrolladores ya han puesto a disposición en este píxel de Fb.
O tal vez desee concatenar una lista de cadenas, como etiquetas de artículos (('tradition', 'politics')
) y enviarlo como una cadena separada por comas a Google Analytics ('tradition,politics'
).
¡Esto es fácil de hacer! ¡Sólo sigue este consejo!
incógnita
El boletín informativo de Simmer
Suscríbete a la Boletín informativo de Simmer ¡Para recibir las últimas noticias y contenidos de Simo Ahava en tu bandeja de entrada de correo electrónico!
Consejo 61: Construya una matriz o una cadena concatenada a partir de múltiples propiedades de objeto
Con los métodos Array de JavaScript, esto es fácil de hacer. Aquí se muestra un tutorial con un ejemplo actual.
Digamos que tienes una página de recibo de pedido en tu tienda de comercio electrónico, donde has implementado lo siguiente Comercio electrónico mejorado buy
configuración:
window.dataLayer = window.dataLayer || ();
window.dataLayer.push({
occasion: 'ecommerce',
ecommerce: {
buy: {
actionField: {
id: 'order1',
income: '10.00'
},
merchandise: ({
id: 'product1',
worth: '6.00',
amount: 1
},{
id: 'product2',
worth: '4.00',
amount: 1
})
}
}
});
Si conoces tu Comercio electrónico mejoradoeste código representa un objeto de compra bien formado y, si tiene una etiqueta de comercio electrónico mejorado habilitada que se activa en un ecommerce
Disparador de evento personalizado: debería poder recopilar estos datos de compra en su propiedad de Common Analytics.
Pero ahora tenemos un píxel (como Fb), que requiere una matriz de solo los identificadores de producto (es decir ('product1', 'product2')
. O bien, puede tener un rastreador, que requiere una cadena separada por comas del mismo (es decir, 'product1,product2'
).
Primero, necesitarás crear un Variable de capa de datos Lo cual apunta a la Matriz que contiene los objetos a cuyas propiedades desea accederEn este caso, sería ecommerce.buy.merchandise
:
He elegido nombrar esto {{DLV – comercio electrónico.compra.productos}}.
A continuación, necesitará una variable de JavaScript personalizada donde se produce la magia. Esta variable devuelve un Formación de todos los identificadores de productos (es decir ('product1', 'product2')
).
operate() {
var merchandise = {{DLV - ecommerce.buy.merchandise}};
return merchandise.scale back(operate(arr, prod) { return arr.concat(prod.id); }, ());
}
El scale back()
El método básicamente toma una matriz (la merchandise
Matriz), y para cada miembro de la Matriz puedes elegir incrementar un acumulador (una Matriz vacía en este caso) con los datos que elijas. En este caso, tomamos la id
valor de cada elemento de la matriz y crear una nueva matriz con esta información.
Si quieres convertir esto en un cadena separada por comas (es decir 'product1,product2'
), solo necesitas encadenar otro método Array al return
declaración:
operate() {
var merchandise = {{DLV - ecommerce.buy.merchandise}};
return merchandise.scale back(operate(arr, prod) { return arr.concat(prod.id); }, ()).be a part of();
}
El be a part of()
El método convierte cualquier matriz en una cadena, utilizando lo que pase entre paréntesis como separador. Si no outline explícitamente un delimitador, se utiliza automáticamente una coma.
Estas dos funciones deberían permitirle convertir fácilmente cualquier matriz compleja de objetos en una estructura de datos única y sencilla: lo que necesite en cualquier situación determinada.
ACTUALIZAR:Gracias al comentario de postman31 a continuación, también puedes usar el Array.prototype.map()
método para realizar estas tareas de forma aún más elegante.
operate() {
var merchandise = {{DLV - ecommerce.buy.merchandise}};
return merchandise.map(operate(prod) { return prod.id; });
// OR:
// return merchandise.map(operate(prod) { return prod.id; }).be a part of();
}