✨ feat(Product): Ajoute méthode json pour sérialiser les données du produit. ✨ feat(analytics): Intègre suivi Umami pour catalogue, contact et produits. ✨ feat(caddy): Ajoute header Cloudflare et script UTM, améliore config PHP. ✨ feat(nelmio): Autorise tools-security.esy-web.dev dans CSP. ✨ feat(template): Ajoute suivi Umami sur pages catalogue, contact et produit. ```
59 lines
2.1 KiB
JavaScript
59 lines
2.1 KiB
JavaScript
export class UtmAccount extends HTMLElement {
|
|
connectedCallback() {
|
|
if (typeof umami === 'undefined') {
|
|
console.warn('Umami script non détecté.');
|
|
return;
|
|
}
|
|
const umamiScript = document.querySelector('script[data-website-id]');
|
|
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
|
|
umami.identify('user_'+this.getAttribute('id'), { name: this.getAttribute('name'), email: this.getAttribute('email') });
|
|
|
|
}
|
|
}
|
|
export class UtmEvent extends HTMLElement {
|
|
connectedCallback() {
|
|
// On attend un court instant pour s'assurer qu'umami est chargé
|
|
// ou on vérifie s'il existe déjà
|
|
if (typeof umami === 'undefined') {
|
|
console.warn('Umami script non détecté.');
|
|
return;
|
|
}
|
|
|
|
const event = this.getAttribute('event');
|
|
const dataRaw = this.getAttribute('data');
|
|
|
|
// Extraction dynamique du website-id depuis le script existant
|
|
const umamiScript = document.querySelector('script[data-website-id]');
|
|
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
|
|
|
|
if (!websiteId) {
|
|
console.error('Impossible de trouver le data-website-id umami.');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
if (event === "view_catalogue") {
|
|
umami.track('Affichage du catalogue');
|
|
}
|
|
if (event === "view_contact") {
|
|
umami.track('Affichage du page contact');
|
|
umami.track('Affichage du page contact');
|
|
}
|
|
|
|
if (event === "view_product" && dataRaw) {
|
|
const data = JSON.parse(dataRaw);
|
|
|
|
// Umami track accepte soit un nom seul,
|
|
// soit un objet complet pour des propriétés personnalisées
|
|
umami.track({
|
|
website: websiteId,
|
|
name:'Affichage produit',
|
|
data: data
|
|
});
|
|
}
|
|
} catch (e) {
|
|
console.error('Erreur lors du tracking Umami:', e);
|
|
}
|
|
}
|
|
}
|