396 lines
24 KiB
PHP
396 lines
24 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
require_once __DIR__ . '/site.php';
|
||
|
||
$site = site_settings();
|
||
$pageTitle = 'Programme TV ce soir et en ce moment | ' . $site['domain'];
|
||
$fallbackDescription = 'Programme TV ce soir, direct en ce moment, chaînes TNT, films, séries, sport, documentaires et prime time : consultez rapidement ce qu\'il y a à la télé sur programmetelecesoir.net.';
|
||
$keywords = 'programme tv ce soir, programme télé ce soir, en ce moment, ce soir à la télé, programme tv tnt, film ce soir, série ce soir, match ce soir, émission ce soir, programme tf1, programme france 2, programme m6, programme arte, direct tv, grille tv, programmetelecesoir.net';
|
||
$updatedAt = date('d/m/Y');
|
||
$visitorStats = [
|
||
'live' => 0,
|
||
'daily' => 0,
|
||
'total' => 0,
|
||
'live_window_minutes' => 5,
|
||
'updated_at' => date(DATE_ATOM),
|
||
'updated_label' => date('H:i:s'),
|
||
];
|
||
|
||
try {
|
||
require_once __DIR__ . '/db/visit_counter.php';
|
||
$visitorStats = visit_counter_snapshot();
|
||
} catch (Throwable $exception) {
|
||
// Le site doit rester browsable même si la base ou le compteur sont temporairement indisponibles.
|
||
}
|
||
|
||
$quickLinks = [
|
||
[
|
||
'title' => 'Voir le direct immédiatement',
|
||
'copy' => 'Accédez au widget “en ce moment” pour savoir ce qui passe maintenant sur les chaînes les plus consultées.',
|
||
'href' => '#widget-section',
|
||
],
|
||
[
|
||
'title' => 'Comparer le prime time',
|
||
'copy' => 'Parcourez les mots-clés, les chaînes et les catégories éditoriales pour préparer votre soirée TV.',
|
||
'href' => '#guide',
|
||
],
|
||
[
|
||
'title' => 'Repérer un film, une série ou un match',
|
||
'copy' => 'Les sections éditoriales ciblent les recherches les plus fréquentes liées au programme TV ce soir.',
|
||
'href' => '#recherches',
|
||
],
|
||
[
|
||
'title' => 'Contrôler vos cookies',
|
||
'copy' => 'Utilisez la bannière et le bouton flottant en bas à gauche pour modifier vos choix à tout moment.',
|
||
'href' => '#legal',
|
||
],
|
||
];
|
||
|
||
$benefits = [
|
||
'Programme TV ce soir et en ce moment sur une page simple, rapide et lisible.',
|
||
'Accès prioritaire aux chaînes TNT, aux grandes chaînes nationales et aux rendez-vous de prime time.',
|
||
'Lecture mobile optimisée avec défilement horizontal visible sous le widget TV.',
|
||
'Conformité vie privée avec bannière de consentement, réglages persistants et documents légaux dédiés.',
|
||
];
|
||
|
||
$channelCards = [
|
||
['name' => 'TF1', 'copy' => 'Programme TF1 ce soir : divertissement, fiction populaire, sport et grands événements en prime time.'],
|
||
['name' => 'France 2', 'copy' => 'Programme France 2 ce soir : séries, magazines, infos, culture et soirées événementielles.'],
|
||
['name' => 'France 3', 'copy' => 'Programme France 3 ce soir : patrimoine, régions, cinéma français et documentaires accessibles.'],
|
||
['name' => 'Canal+', 'copy' => 'Programme Canal+ ce soir : cinéma, créations originales, sport premium et événements exclusifs.'],
|
||
['name' => 'M6', 'copy' => 'Programme M6 ce soir : divertissements, magazines, séries et rendez-vous familiaux.'],
|
||
['name' => 'Arte', 'copy' => 'Programme Arte ce soir : films d’auteur, documentaires, culture, histoire et créations européennes.'],
|
||
['name' => 'France 5', 'copy' => 'Programme France 5 ce soir : documentaires, débats, société, science et découverte.'],
|
||
['name' => 'C8 / CStar', 'copy' => 'Programme C8 et CStar ce soir : magazines, talk-shows, divertissements et musique.'],
|
||
['name' => 'TMC / TFX', 'copy' => 'Programme TMC et TFX ce soir : films, séries populaires, talks et télé-réalité.'],
|
||
['name' => 'W9 / 6ter', 'copy' => 'Programme W9 et 6ter ce soir : cinéma, séries, clips, magazines et programmes feel-good.'],
|
||
['name' => 'RMC Story / RMC Découverte', 'copy' => 'Programme RMC Story et RMC Découverte : enquêtes, découverte, mécanique, société et histoire.'],
|
||
['name' => 'Gulli / Jeunesse', 'copy' => 'Programme jeunesse ce soir : dessins animés, films familiaux et rendez-vous enfants.'],
|
||
];
|
||
|
||
$keywordBadges = [
|
||
'programme tv ce soir', 'programme télé ce soir', 'ce soir à la télé', 'programme tv en ce moment', 'programme tnt ce soir',
|
||
'film ce soir', 'série ce soir', 'match ce soir', 'sport à la tv', 'documentaire ce soir', 'émission ce soir',
|
||
'prime time', 'deuxième partie de soirée', 'direct tv', 'grille tv', 'chaînes tnt', 'programme tf1 ce soir',
|
||
'programme france 2 ce soir', 'programme m6 ce soir', 'programme arte ce soir', 'télé ce soir', 'que regarder ce soir',
|
||
'programme canal+', 'programme france 3', 'programme france 5', 'programme tmc', 'programme w9', 'programme c8',
|
||
];
|
||
|
||
$faqItems = [
|
||
[
|
||
'question' => 'Où voir rapidement le programme TV ce soir ?',
|
||
'answer' => 'La zone “Programme TV en ce moment” placée en haut de la page donne un accès direct au widget, puis les sections éditoriales vous aident à comparer les chaînes, les genres et les créneaux du soir.',
|
||
],
|
||
[
|
||
'question' => 'Comment savoir ce qu\'il y a à la télé en ce moment ?',
|
||
'answer' => 'Le widget affiche le direct des chaînes les plus consultées. Sur mobile et tablette, un défilement horizontal est prévu sous le widget pour conserver une lecture confortable.',
|
||
],
|
||
[
|
||
'question' => 'Quelles chaînes sont mises en avant sur la page ?',
|
||
'answer' => 'La page couvre les grandes chaînes généralistes et TNT recherchées le plus souvent : TF1, France 2, France 3, M6, Arte, Canal+, France 5, TMC, W9, C8 et d’autres chaînes populaires.',
|
||
],
|
||
[
|
||
'question' => 'Quels cookies sont utilisés sur programmetelecesoir.net ?',
|
||
'answer' => 'Le site dépose le cookie essentiel ptcs_consent pour mémoriser vos choix. Si vous activez la mesure locale d\'audience, le cookie optionnel ptcs_visit_id alimente le compteur de visiteurs en direct, journalier et total, sans service tiers publicitaire.',
|
||
],
|
||
[
|
||
'question' => 'Qui contacter pour les questions de confidentialité ?',
|
||
'answer' => 'Le DPO déclaré sur le site est M LORENTE CHRISTOPHE, 7 rue Lucien Deneau – 28300 Mainvilliers, téléphone 06 58 22 59 16. Les détails figurent aussi dans la politique de confidentialité.',
|
||
],
|
||
];
|
||
|
||
$faqSchema = [
|
||
'@context' => 'https://schema.org',
|
||
'@type' => 'FAQPage',
|
||
'mainEntity' => array_map(static function (array $item): array {
|
||
return [
|
||
'@type' => 'Question',
|
||
'name' => $item['question'],
|
||
'acceptedAnswer' => [
|
||
'@type' => 'Answer',
|
||
'text' => $item['answer'],
|
||
],
|
||
];
|
||
}, $faqItems),
|
||
];
|
||
|
||
$organizationSchema = [
|
||
'@context' => 'https://schema.org',
|
||
'@type' => 'Organization',
|
||
'name' => $site['domain'],
|
||
'url' => ($site['canonical_base_url'] ?? $site['base_url']) . '/',
|
||
'description' => $fallbackDescription,
|
||
'address' => [
|
||
'@type' => 'PostalAddress',
|
||
'streetAddress' => '7 rue Lucien Deneau',
|
||
'postalCode' => '28300',
|
||
'addressLocality' => 'Mainvilliers',
|
||
'addressCountry' => 'FR',
|
||
],
|
||
'contactPoint' => [
|
||
'@type' => 'ContactPoint',
|
||
'contactType' => 'data protection officer',
|
||
'name' => $site['dpo_name'],
|
||
'telephone' => '+33 6 58 22 59 16',
|
||
'availableLanguage' => ['fr'],
|
||
],
|
||
];
|
||
$cookieConsentLock = site_should_lock_cookie_overlay();
|
||
?>
|
||
<!doctype html>
|
||
<html lang="fr">
|
||
<head>
|
||
<?php render_site_head($pageTitle, $fallbackDescription, $keywords); ?>
|
||
</head>
|
||
<body class="app-body<?= $cookieConsentLock ? ' cookie-consent-locked' : '' ?>" data-page="home" data-cookie-lock="<?= $cookieConsentLock ? 'pending' : 'released' ?>">
|
||
<?php render_site_nav('home'); ?>
|
||
<noscript>
|
||
<div class="container pt-3">
|
||
<div class="alert alert-secondary border-0">JavaScript est nécessaire pour la gestion fine des cookies et pour le chargement du widget TV.</div>
|
||
</div>
|
||
</noscript>
|
||
<main class="site-main">
|
||
<section class="hero-section" id="top" data-track-section>
|
||
<div class="container">
|
||
<div class="hero-grid">
|
||
<div class="hero-copy">
|
||
<span class="eyebrow">Programme TV • France • Mise à jour éditoriale du <?= e($updatedAt) ?></span>
|
||
<h1>Programme TV ce soir et en ce moment : votre accès rapide aux chaînes et aux rendez-vous du soir</h1>
|
||
<p class="lead">Programmetelecesoir.net centralise l'intention de recherche la plus importante du secteur : savoir <strong>ce qu'il y a à la télé ce soir</strong> et <strong>ce qui passe en ce moment</strong>. La page met immédiatement le widget TV en avant, puis complète la lecture avec un guide éditorial pensé pour le prime time, les films, les séries, le sport, les documentaires et les chaînes TNT les plus consultées.</p>
|
||
<div class="hero-actions">
|
||
<a class="btn btn-dark btn-refined" href="#widget-section">Voir le programme en ce moment</a>
|
||
<a class="btn btn-outline-dark btn-refined" href="#guide">Lire le guide TV du soir</a>
|
||
<a class="btn btn-outline-dark btn-refined" href="#faq">Questions fréquentes</a>
|
||
</div>
|
||
<div class="hero-proof">
|
||
<?php foreach ($benefits as $benefit): ?>
|
||
<div class="proof-item">
|
||
<span class="proof-dot" aria-hidden="true"></span>
|
||
<span><?= e($benefit) ?></span>
|
||
</div>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
</div>
|
||
<aside class="stacked-panels" aria-label="Informations complémentaires">
|
||
<article class="info-panel compact-panel">
|
||
<div class="panel-heading">
|
||
<span class="panel-kicker">Préférences</span>
|
||
<h2>Consentement en direct</h2>
|
||
</div>
|
||
<p class="panel-copy" data-consent-summary>Le site conserve uniquement l'essentiel tant que vous n'avez pas choisi d'options supplémentaires.</p>
|
||
<ul class="status-list list-unstyled mb-0">
|
||
<li><span>Essentiels</span><span class="status-pill" data-consent-badge="essential">Toujours actif</span></li>
|
||
<li><span>Personnalisation</span><span class="status-pill" data-consent-badge="personalization">Désactivée</span></li>
|
||
<li><span>Audience locale</span><span class="status-pill" data-consent-badge="audience">Désactivée</span></li>
|
||
</ul>
|
||
</article>
|
||
<article class="info-panel compact-panel visit-counter-panel" data-visit-counter-endpoint="/api/visit-counter.php" data-live-window-minutes="<?= e((string) $visitorStats['live_window_minutes']) ?>" data-initial-live="<?= e((string) $visitorStats['live']) ?>" data-initial-daily="<?= e((string) $visitorStats['daily']) ?>" data-initial-total="<?= e((string) $visitorStats['total']) ?>" data-updated-at="<?= e((string) $visitorStats['updated_at']) ?>" data-updated-label="<?= e((string) $visitorStats['updated_label']) ?>">
|
||
<div class="panel-heading">
|
||
<span class="panel-kicker">Audience</span>
|
||
<h2>Compteur visiteurs en direct</h2>
|
||
</div>
|
||
<p class="panel-copy" data-visit-status>Le compteur affiche l'audience anonyme en direct, les visiteurs du jour et le total mesuré. Il se met à jour automatiquement si la mesure locale d'audience est acceptée.</p>
|
||
<div class="stat-grid stat-grid--counter" aria-live="polite">
|
||
<div>
|
||
<strong data-visit-live><?= e((string) $visitorStats['live']) ?></strong>
|
||
<span>en direct</span>
|
||
</div>
|
||
<div>
|
||
<strong data-visit-daily><?= e((string) $visitorStats['daily']) ?></strong>
|
||
<span>aujourd'hui</span>
|
||
</div>
|
||
<div>
|
||
<strong data-visit-total><?= e((string) $visitorStats['total']) ?></strong>
|
||
<span>total</span>
|
||
</div>
|
||
</div>
|
||
<p class="panel-note mb-0" data-visit-updated>Dernière mise à jour : <?= e((string) $visitorStats['updated_label']) ?> · “En direct” = visiteurs actifs sur les <?= e((string) $visitorStats['live_window_minutes']) ?> dernières minutes.</p>
|
||
</article>
|
||
<article class="info-panel compact-panel">
|
||
<div class="panel-heading">
|
||
<span class="panel-kicker">Conformité</span>
|
||
<h2>DPO et hébergement</h2>
|
||
</div>
|
||
<p class="panel-copy mb-2"><strong><?= e($site['dpo_name']) ?></strong><br><?= e($site['dpo_address']) ?><br>Tél. <?= e($site['dpo_phone']) ?></p>
|
||
<p class="panel-copy mb-0">Hébergeur indiqué sur le site : <strong><?= e($site['host_name']) ?></strong>.</p>
|
||
</article>
|
||
</aside>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="widget-section" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading with-meta">
|
||
<div>
|
||
<span class="eyebrow">Accès direct</span>
|
||
<h2>Voir ce qu'il y a à la télé maintenant</h2>
|
||
<p>Le widget est volontairement placé juste sous le titre pour répondre immédiatement à la requête “programme TV en ce moment”. Sur mobile et tablette, la zone est contenue dans un défilement horizontal visible en bas.</p>
|
||
</div>
|
||
<div class="section-meta">Défilement horizontal activé sur mobile et tablette</div>
|
||
</div>
|
||
|
||
<div class="widget-card">
|
||
<div class="widget-scroll" role="region" aria-label="Widget programme TV avec défilement horizontal sur mobile et tablette">
|
||
<div class="widget-scroll__inner">
|
||
<a class="widget-tv2" href="https://tv-programme.com" data-type="en-ce-moment" data-nb-chaines="12" data-color="#DFF0D8" data-width="100%">Programme TV</a><script async src="https://tv-programme.com/widget.js"></script><p class="tvp-widget-attribution">Source TV : <a href="https://tv-programme.com">Programme TV</a></p>
|
||
</div>
|
||
</div>
|
||
<div class="scroll-note" id="scroll-hint">
|
||
<div>
|
||
<strong>Astuce mobile :</strong> si toute la largeur n'est pas visible, faites glisser horizontalement la zone du widget. Ce rappel peut être mémorisé uniquement si la personnalisation est activée.
|
||
</div>
|
||
<button type="button" id="scroll-hint-dismiss">Masquer ce conseil</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="guide" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading">
|
||
<span class="eyebrow">Guide TV du soir</span>
|
||
<h2>Une longue page SEO orientée sur les recherches réelles des internautes</h2>
|
||
<p>Cette page cible les requêtes majeures du secteur : <strong>programme TV ce soir</strong>, <strong>programme télé ce soir</strong>, <strong>ce soir à la télé</strong>, <strong>programme TV TNT</strong>, <strong>film ce soir</strong>, <strong>série ce soir</strong>, <strong>match ce soir</strong>, <strong>documentaire ce soir</strong> et <strong>programme TV en ce moment</strong>.</p>
|
||
</div>
|
||
<div class="content-grid">
|
||
<article class="article-panel">
|
||
<p>Si vous cherchez <strong>quoi regarder ce soir</strong>, la logique de programmetelecesoir.net est simple : offrir d'abord le direct, puis un accompagnement éditorial lisible. En un seul endroit, vous pouvez surveiller le programme TV des grandes chaînes, comparer le prime time, repérer un film à la télévision ce soir, vérifier la présence d'une série, d'un documentaire, d'un match, d'une émission d'information, d'un magazine ou d'un divertissement familial.</p>
|
||
<p>La structure éditoriale de la page reprend les formulations les plus recherchées autour du <strong>programme télé ce soir</strong> : programme TV TNT ce soir, programme TV maintenant, télé ce soir, programme des chaînes en soirée, directs TV, grille TV du soir, deuxième partie de soirée, films et séries du prime time. L'objectif n'est pas d'encombrer la lecture, mais de répondre précisément aux intentions qui reviennent le plus souvent sur mobile comme sur desktop.</p>
|
||
<p>Les internautes qui tapent <strong>programme TF1 ce soir</strong>, <strong>programme France 2 ce soir</strong>, <strong>programme M6 ce soir</strong> ou <strong>programme Arte ce soir</strong> recherchent généralement un accès immédiat, sans détour, avec une page rapide, claire et fiable. C'est pour cette raison que le site priorise la lisibilité, le widget en tête de page, des cartes chaînes synthétiques, une FAQ structurée et des documents légaux facilement accessibles.</p>
|
||
</article>
|
||
<aside class="aside-panels">
|
||
<?php foreach ($quickLinks as $item): ?>
|
||
<article class="info-panel">
|
||
<h3><?= e($item['title']) ?></h3>
|
||
<p><?= e($item['copy']) ?></p>
|
||
<a class="text-link" href="<?= e($item['href']) ?>">Accéder à la section</a>
|
||
</article>
|
||
<?php endforeach; ?>
|
||
</aside>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="chaines" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading">
|
||
<span class="eyebrow">Chaînes recherchées</span>
|
||
<h2>Programme TV du soir chaîne par chaîne</h2>
|
||
<p>La page reprend les grandes intentions liées aux principales chaînes consultées en France pour le programme de ce soir, le direct actuel, les films, les séries, les magazines, la culture et le sport.</p>
|
||
</div>
|
||
<div class="card-grid card-grid--three">
|
||
<?php foreach ($channelCards as $channel): ?>
|
||
<article class="channel-card">
|
||
<div class="channel-card__name"><?= e($channel['name']) ?></div>
|
||
<p><?= e($channel['copy']) ?></p>
|
||
</article>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="recherches" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading">
|
||
<span class="eyebrow">Intentions fréquentes</span>
|
||
<h2>Mots-clés éditoriaux et besoins de lecture</h2>
|
||
<p>Pour couvrir un maximum d'intentions, la page déploie un champ lexical riche mais propre, sans agressivité visuelle. Les badges ci-dessous représentent les expressions que le visiteur recherche le plus souvent avant de choisir son programme.</p>
|
||
</div>
|
||
<div class="keyword-cloud" aria-label="Mots-clés du programme TV ce soir">
|
||
<?php foreach ($keywordBadges as $keyword): ?>
|
||
<span class="keyword-pill"><?= e($keyword) ?></span>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
<div class="content-grid mt-4">
|
||
<article class="info-panel article-like">
|
||
<h3>Comment choisir rapidement le bon programme ce soir ?</h3>
|
||
<ol class="ordered-steps">
|
||
<li>Commencez par le widget “en ce moment” pour identifier l'offre en direct.</li>
|
||
<li>Repérez ensuite la chaîne qui correspond à votre envie : film, série, documentaire, sport, culture ou divertissement.</li>
|
||
<li>Consultez les cartes chaînes pour accélérer la comparaison entre TF1, France 2, M6, Arte, Canal+ et TNT.</li>
|
||
<li>Utilisez la FAQ et les liens légaux si vous souhaitez comprendre la confidentialité, les cookies et les règles d'utilisation.</li>
|
||
</ol>
|
||
</article>
|
||
<article class="info-panel article-like">
|
||
<h3>Pourquoi cette page fonctionne bien sur mobile ?</h3>
|
||
<p>Le design a été allégé pour rester très lisible : navigation compacte, sections régulières, contraste fort, cartes sobres, bouton flottant pour les cookies et zone horizontale spécifique sous le widget afin d'éviter toute coupure sur smartphone ou tablette. Le résultat est plus confortable pour les utilisateurs qui cherchent vite “ce soir à la télé” depuis leur mobile.</p>
|
||
<p>Le site évite aussi les scripts marketing et les effets visuels inutiles. Cela aide à conserver une expérience rapide, rassurante et facile à parcourir, ce qui renforce la consultation répétée lorsqu'on veut simplement savoir quel programme TV regarder ce soir.</p>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="faq" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading">
|
||
<span class="eyebrow">FAQ</span>
|
||
<h2>Questions fréquentes sur le programme TV ce soir</h2>
|
||
<p>Les réponses ci-dessous renforcent l'intention utilisateur tout en gardant une lecture utile, concise et structurée.</p>
|
||
</div>
|
||
<div class="accordion custom-accordion" id="faqAccordion">
|
||
<?php foreach ($faqItems as $index => $item): ?>
|
||
<div class="accordion-item">
|
||
<h3 class="accordion-header" id="faq-heading-<?= $index ?>">
|
||
<button class="accordion-button <?= $index === 0 ? '' : 'collapsed' ?>" type="button" data-bs-toggle="collapse" data-bs-target="#faq-collapse-<?= $index ?>" aria-expanded="<?= $index === 0 ? 'true' : 'false' ?>" aria-controls="faq-collapse-<?= $index ?>">
|
||
<?= e($item['question']) ?>
|
||
</button>
|
||
</h3>
|
||
<div id="faq-collapse-<?= $index ?>" class="accordion-collapse collapse <?= $index === 0 ? 'show' : '' ?>" aria-labelledby="faq-heading-<?= $index ?>" data-bs-parent="#faqAccordion">
|
||
<div class="accordion-body">
|
||
<?= e($item['answer']) ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-block" id="legal" data-track-section>
|
||
<div class="container">
|
||
<div class="section-shell">
|
||
<div class="section-heading">
|
||
<span class="eyebrow">Confiance & conformité</span>
|
||
<h2>Politique de cookies, confidentialité et règlement</h2>
|
||
<p>Les documents juridiques ont été séparés en pages dédiées pour rester clairs et faciles à consulter. Le bouton flottant en bas à gauche rouvre les préférences cookies à tout moment.</p>
|
||
</div>
|
||
<div class="card-grid card-grid--three">
|
||
<article class="legal-card">
|
||
<h3>Politique de cookies</h3>
|
||
<p>Détail du cookie essentiel de consentement, des options facultatives et du rôle du widget TV nécessaire au service.</p>
|
||
<a class="text-link" href="/politique-cookies.php">Lire la politique de cookies</a>
|
||
</article>
|
||
<article class="legal-card">
|
||
<h3>Politique de confidentialité</h3>
|
||
<p>Présentation du responsable, du DPO, de l'hébergement, des données traitées et des droits des personnes.</p>
|
||
<a class="text-link" href="/politique-confidentialite.php">Lire la politique de confidentialité</a>
|
||
</article>
|
||
<article class="legal-card">
|
||
<h3>Règlement d'utilisation</h3>
|
||
<p>Cadre d'usage du site, responsabilité, disponibilité, propriété intellectuelle et rappel des règles de consultation.</p>
|
||
<a class="text-link" href="/reglement.php">Lire le règlement</a>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
<?php render_site_footer(); ?>
|
||
<?php render_cookie_controls(); ?>
|
||
<script type="application/ld+json"><?= json_encode($organizationSchema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ?></script>
|
||
<script type="application/ld+json"><?= json_encode($faqSchema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ?></script>
|
||
<?php render_site_scripts(); ?>
|
||
</body>
|
||
</html>
|