{%- set meta = seo|merge(page_seo|default({})) %} {{ meta.title }} {# Open Graph / Twitter #} {# Favicons / manifest (S-040) #} {# Google Fonts (S-039) #} {# JSON-LD global (SPEC §10) #} {{ json_ld(jsonld_organization()) }} {{ json_ld(jsonld_local_business()) }} {% block json_ld %}{% endblock %} {% block stylesheets %} {{ encore_entry_link_tags('app') }} {% endblock %} {%- if gsc_verification %}{% endif %} {# Consent Mode v2 (CNIL) : analytics refusé par défaut, mis à jour au consentement (S-118/119) #} {%- if gtm_id or ga_id %} {%- endif %} {# Google Tag Manager #} {%- if gtm_id %} {%- endif %} {%- if ga_id %} {%- endif %} {# reCAPTCHA n'est PAS chargé ici : aucun des deux gabarits qui étendent ce fichier ne porte de formulaire, et les pages qui en ont un le chargent elles-mêmes. #} {%- if gtm_id %} {%- endif %} {% include 'components/header.html.twig' %} {% include 'components/mobile-menu.html.twig' %} {% include 'components/flash.html.twig' %}
{% block body %}{% endblock %}
{% include 'components/footer.html.twig' %} {% include 'components/chatbot-widget.html.twig' %} {% include 'components/cookie-banner.html.twig' %} {# Les liens vers une page décochée dans le back-office restent visibles : le visiteur qui clique tombe sur la page « introuvable », ce qui est voulu. Pour les masquer à nouveau, réinclure ici components/hide-inactive-links.html.twig, qui fait ce travail. #} {% block javascripts %} {{ encore_entry_script_tags('app') }} {% endblock %}