1 Commits

Author SHA1 Message Date
846c066314 add: счетчик google.analytic
All checks were successful
Build ETPGRF-site / build (push) Successful in 1m27s
2026-01-24 13:48:50 +03:00
2 changed files with 24 additions and 5 deletions

View File

@@ -70,7 +70,7 @@
{# Футер #}<footer class="footer mt-auto py-2 mt-4"> {# Футер #}<footer class="footer mt-auto py-2 mt-4">
<div class="container d-flex justify-content-between align-items-center"> <div class="container d-flex justify-content-between align-items-center">
<span class="text-muted small nowrap me-2">&copy; Sergei Erjemin, 2025&ndash;{% now 'Y' %}.</span> <span class="text-muted small nowrap me-2">&copy; Sergei Erjemin, 2025&ndash;{% now 'Y' %}.</span>
<nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i>v0.1.3 / v0.1.6 <nobr class="text-muted small mx-2"><i class="bi bi-tags me-1" title="Версия библиотеки etpgrf / Версия сайта"></i>v0.1.3 / v0.1.8
</nobr> </nobr>
{# Сводная статистика (HTMX) #}<span class="text-muted small ms-2" hx-get="{% url 'stats_summary' %}" hx-trigger="load"> {# Сводная статистика (HTMX) #}<span class="text-muted small ms-2" hx-get="{% url 'stats_summary' %}" hx-trigger="load">
... ...

View File

@@ -14,7 +14,6 @@
// Слушать изменения // Слушать изменения
darkModeMediaQuery.addEventListener('change', updateTheme); darkModeMediaQuery.addEventListener('change', updateTheme);
// --- ЛОГОТИП И СКРОЛЛ --- // --- ЛОГОТИП И СКРОЛЛ ---
function updateLogo() { function updateLogo() {
const navbar = document.getElementById('logo'); const navbar = document.getElementById('logo');
@@ -30,17 +29,15 @@
} }
} }
// Инициализация логотипа при загрузке и скролле // Инициализация логотипа при загрузке и скролле
// document.addEventListener('DOMContentLoaded', updateLogo);
window.addEventListener('scroll', updateLogo, { passive: true }); window.addEventListener('scroll', updateLogo, { passive: true });
// --- КУКИ И СЧЕТЧИКИ --- // --- КУКИ И СЧЕТЧИКИ ---
const COOKIE_KEY = 'cookie_consent'; const COOKIE_KEY = 'cookie_consent';
const TTL_MS = 90 * 24 * 60 * 60 * 1000; // 90 дней const TTL_MS = 90 * 24 * 60 * 60 * 1000; // 90 дней
const MAILRU_ID = "3734603"; const MAILRU_ID = "3734603";
const YANDEX_ID = "106310834"; const YANDEX_ID = "106310834";
const GOOGLE_ID = "G-03WY2S9FXB";
function loadCounters() { function loadCounters() {
// console.log("Загрузка счетчиков..."); // console.log("Загрузка счетчиков...");
@@ -67,6 +64,22 @@
trackLinks:true, trackLinks:true,
accurateTrackBounce:true accurateTrackBounce:true
}); });
// Google Analytics
(function() {
var script = document.createElement('script');
script.async = true;
script.src = 'https://www.googletagmanager.com/gtag/js?id=' + GOOGLE_ID;
document.head.appendChild(script);
})();
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Делаем gtag глобальной, чтобы вызывать из sendGoal
window.gtag = gtag;
gtag('js', new Date());
gtag('config', GOOGLE_ID);
} catch (e) { } catch (e) {
console.error("Ошибка загрузки счетчиков:", e); console.error("Ошибка загрузки счетчиков:", e);
} }
@@ -115,12 +128,18 @@
// console.log("Sending goal:", goalName); // console.log("Sending goal:", goalName);
try { try {
// Mail.ru
if (window._tmr) { if (window._tmr) {
window._tmr.push({ id: MAILRU_ID, type: "reachGoal", goal: goalName, value: 1 }); window._tmr.push({ id: MAILRU_ID, type: "reachGoal", goal: goalName, value: 1 });
} }
// Яндекс.Метрика
if (typeof window.ym === 'function') { if (typeof window.ym === 'function') {
window.ym(YANDEX_ID, 'reachGoal', goalName); window.ym(YANDEX_ID, 'reachGoal', goalName);
} }
// Google Analytics
if (typeof window.gtag === 'function') {
window.gtag('event', goalName);
}
} catch (e) { } catch (e) {
console.error("Ошибка отправки цели:", e); console.error("Ошибка отправки цели:", e);
} }