feat: update metadata for ads
This commit is contained in:
8
js/site-config.js
Normal file
8
js/site-config.js
Normal file
@@ -0,0 +1,8 @@
|
||||
window.__SITE_CONFIG__ = {
|
||||
siteUrl: 'https://elcsa.ru',
|
||||
gtmContainerId: '',
|
||||
ga4MeasurementId: '',
|
||||
googleAdsId: '',
|
||||
yandexMetrikaId: '',
|
||||
yandexWebvisor: true,
|
||||
};
|
||||
84
js/tracking.js
Normal file
84
js/tracking.js
Normal file
@@ -0,0 +1,84 @@
|
||||
function injectGtm(id) {
|
||||
const w = window;
|
||||
w.dataLayer = w.dataLayer || [];
|
||||
w.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
|
||||
const firstScript = document.getElementsByTagName('script')[0];
|
||||
const gtmScript = document.createElement('script');
|
||||
gtmScript.async = true;
|
||||
gtmScript.src = 'https://www.googletagmanager.com/gtm.js?id=' + id;
|
||||
firstScript.parentNode.insertBefore(gtmScript, firstScript);
|
||||
const nos = document.createElement('noscript');
|
||||
const iframe = document.createElement('iframe');
|
||||
iframe.src = 'https://www.googletagmanager.com/ns.html?id=' + id;
|
||||
iframe.height = '0';
|
||||
iframe.width = '0';
|
||||
iframe.setAttribute('style', 'display:none;visibility:hidden');
|
||||
nos.appendChild(iframe);
|
||||
document.body.insertBefore(nos, document.body.firstChild);
|
||||
}
|
||||
|
||||
|
||||
function injectGtag(ids) {
|
||||
const list = ids.filter(Boolean);
|
||||
if (!list.length) {
|
||||
return;
|
||||
}
|
||||
const s = document.createElement('script');
|
||||
s.async = true;
|
||||
s.src = 'https://www.googletagmanager.com/gtag/js?id=' + list[0];
|
||||
document.head.appendChild(s);
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() {
|
||||
window.dataLayer.push(arguments);
|
||||
}
|
||||
window.gtag = gtag;
|
||||
gtag('js', new Date());
|
||||
list.forEach((id) => {
|
||||
gtag('config', id);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function injectYandex(id, webvisor) {
|
||||
if (!id) {
|
||||
return;
|
||||
}
|
||||
(function (m, e, t, r, i, k, a) {
|
||||
m[i] =
|
||||
m[i] ||
|
||||
function () {
|
||||
(m[i].a = m[i].a || []).push(arguments);
|
||||
};
|
||||
m[i].l = 1 * new Date();
|
||||
for (let j = 0; j < document.scripts.length; j += 1) {
|
||||
if (document.scripts[j].src === r) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
k = e.createElement(t);
|
||||
a = e.getElementsByTagName(t)[0];
|
||||
k.async = 1;
|
||||
k.src = r;
|
||||
a.parentNode.insertBefore(k, a);
|
||||
})(window, document, 'script', 'https://mc.yandex.ru/metrika/tag.js', 'ym');
|
||||
window.ym(id, 'init', {
|
||||
clickmap: true,
|
||||
trackLinks: true,
|
||||
accurateTrackBounce: true,
|
||||
webvisor: !!webvisor,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function runTracking() {
|
||||
const c = window.__SITE_CONFIG__ || {};
|
||||
if (c.gtmContainerId) {
|
||||
injectGtm(c.gtmContainerId);
|
||||
} else {
|
||||
injectGtag([c.ga4MeasurementId, c.googleAdsId].filter(Boolean));
|
||||
}
|
||||
injectYandex(c.yandexMetrikaId, c.yandexWebvisor);
|
||||
}
|
||||
|
||||
|
||||
runTracking();
|
||||
Reference in New Issue
Block a user