feat: update metadata for ads

This commit is contained in:
2026-04-22 20:55:37 +03:00
parent 69f67c75fa
commit acaeabd5c4
11 changed files with 149 additions and 14 deletions

84
js/tracking.js Normal file
View 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();