✨ feat(dashboard): Affiche les statistiques des sources de trafic depuis Umami
This commit is contained in:
@@ -104,18 +104,3 @@ export class UtmEvent extends HTMLElement {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Chargement automatique d'Umami si consentement
|
||||
export function loadUmamiScript() {
|
||||
if (sessionStorage.getItem('ldk_cookie') === 'accepted') {
|
||||
if (!document.querySelector('script[data-website-id="38d713c3-3923-4791-875a-dfe5f45372c3"]')) {
|
||||
const script = document.createElement('script');
|
||||
script.defer = true;
|
||||
script.src = "https://tools-security.esy-web.dev/script.js";
|
||||
const umamiScript = document.querySelector('script[data-website-id]');
|
||||
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
|
||||
script.setAttribute('data-website-id', websiteId);
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,6 @@ class HomeController extends AbstractController
|
||||
}
|
||||
});
|
||||
|
||||
$this->cache->delete('umami_stats_24h');
|
||||
// 2. Récupération des Stats (Cache 15min)
|
||||
return $this->cache->get('umami_stats_24h', function (ItemInterface $item) use ($token) {
|
||||
$item->expiresAfter(900);
|
||||
@@ -110,6 +109,7 @@ class HomeController extends AbstractController
|
||||
'type' => 'referrer'
|
||||
],
|
||||
]);
|
||||
dd($metricsResponse->getContent());
|
||||
$referrers = $metricsResponse->toArray();
|
||||
dd($referrers);
|
||||
// 3. Process Sources
|
||||
@@ -146,6 +146,7 @@ class HomeController extends AbstractController
|
||||
'sources' => $sources
|
||||
];
|
||||
} catch (\Exception $e) {
|
||||
dd($e);
|
||||
return [
|
||||
'visitors' => 0,
|
||||
'views' => 0,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
{# --- SEO Fondamental --- #}
|
||||
<title>
|
||||
{% block title %}{{ 'base.seo.title'|trans }}{% endblock %}
|
||||
{% block title %}{{ 'Location Structure Gonflable & Châteaux pour vos Événements | Ludikevent'|trans }}{% endblock %}
|
||||
</title>
|
||||
|
||||
{% if block('description') is defined %}
|
||||
@@ -17,7 +17,7 @@
|
||||
<link rel="canonical" href="{{ app.request.schemeAndHttpHost }}{{ app.request.pathinfo }}">
|
||||
{% endblock %}
|
||||
|
||||
<meta name="keywords" content="{{ 'base.seo.keywords'|trans }}">
|
||||
<meta name="keywords" content="{{ 'location structure gonflable, location chateau gonflable, location barnum, jeux exterieurs, animation anniversaire, location materiel evenementiel, parcours gonflable, location machine barbe a papa, ludikevent'|trans }}">
|
||||
|
||||
{# --- Open Graph --- #}
|
||||
<meta property="og:type" content="website">
|
||||
@@ -27,6 +27,7 @@
|
||||
<meta property="og:description" content="{{ block('description') }}">
|
||||
{% endif %}
|
||||
<meta property="og:image" content="{{ absolute_url(asset('provider/images/favicon.png')) }}">
|
||||
<meta property="article:publisher" content="https://www.facebook.com/profile.php?id=61574652399326">
|
||||
|
||||
{# --- Twitter Card --- #}
|
||||
<meta name="twitter:card" content="summary">
|
||||
@@ -35,14 +36,49 @@
|
||||
|
||||
{% block extra_header %}{% endblock %}
|
||||
|
||||
{# ... scripts PWA / Analytics ... #}
|
||||
{# --- Données Structurées (JSON-LD) --- #}
|
||||
<script type="application/ld+json">
|
||||
[
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "LocalBusiness",
|
||||
"name": "Ludikevent",
|
||||
"image": "{{ absolute_url(asset('provider/images/favicon.png')) }}",
|
||||
"telephone": "+33614172447",
|
||||
"email": "contact@ludikevent.fr",
|
||||
"url": "{{ app.request.schemeAndHttpHost }}",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "6 Rue du Château",
|
||||
"addressLocality": "Danizy",
|
||||
"postalCode": "02800",
|
||||
"addressCountry": "FR"
|
||||
},
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": 49.6644,
|
||||
"longitude": 3.3852
|
||||
},
|
||||
"sameAs": [
|
||||
"https://www.facebook.com/profile.php?id=61574652399326"
|
||||
],
|
||||
"priceRange": "€€"
|
||||
}
|
||||
]
|
||||
</script>
|
||||
{% block jsonld %}{% endblock %}
|
||||
|
||||
{# --- PWA & Analytics --- #}
|
||||
{% if app.environment != 'dev' %}
|
||||
{{ pwa(swAttributes={ 'nonce': csp_nonce('script') }) }}
|
||||
<script data-host-url="https://tools-security.esy-web.dev" nonce="{{ csp_nonce('script') }}" defer src="/utm_reserve.js" data-website-id="38d713c3-3923-4791-875a-dfe5f45372c3"></script>
|
||||
{% else %}
|
||||
<script data-host-url="https://tools-security.esy-web.dev" nonce="{{ csp_nonce('script') }}" defer src="/utm_reserve.js" data-website-id="3915e612-2df0-4ebe-b9e0-a171d7977d42"></script>
|
||||
{% endif %}
|
||||
|
||||
<script nonce="{{ csp_nonce('script') }}" src="/ts.js"></script>
|
||||
{{ vite_asset('reserve.js',{}) }}
|
||||
{% block stylesheets %}{% endblock %}
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="LudikEvent - Tout" href="{{ url('app_rss_feed', {channel: 'all'}) }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="LudikEvent - Produits" href="{{ url('app_rss_feed', {channel: 'products'}) }}">
|
||||
<link rel="alternate" type="application/rss+xml" title="LudikEvent - Formules" href="{{ url('app_rss_feed', {channel: 'formules'}) }}">
|
||||
</head>
|
||||
|
||||
<body class="bg-gray-50 text-gray-900 font-sans antialiased min-h-screen flex flex-col">
|
||||
|
||||
Reference in New Issue
Block a user