{% block seoIndex %} {% endblock %} {# Métadonnées pour la mesure d'audience (page produit : id + catégorie) #} {% block analytics_meta %}{% endblock %} {# Éléments de styles CSS #} {# Notifications DA 2.0 — style global (toasts thémés) #} {# Bandeau d'annonce global (campagnes /gestion/bandeaux) #} {# Pied de page DA 2.0 — style global (colophon de forge) #} {# Consentement cookies DA 2.0 — style global (carte forge) #} {# Menu mobile DA 2.0 — style global (tiroir de forge + burger) #} {# Défilement adouci DA 2.0 (Lenis vendored) — styles d'appoint #} {# Jeton CSRF des APIs publiques (panier, réservation) — lu par les scripts (header X-CSRF-Token) #} {# Styles spécifiques à une page (opt-in, vide par défaut — n'affecte aucune page existante) #} {% block stylesheets %}{% endblock %} {# Polices auto-hébergées (Fraunces / Inter / IBM Plex Mono / Lora) — aucune requête vers Google. Voir public/styles/fonts.css. #} {# Importation de SwiperJS #} {# SWIPER CSS #} {# SWIPER JS #} {# #} {# og:url / og:title / og:description reflètent par défaut canonical / title / metaDesc de la page #} {% block structuredData %} {% endblock %} {# Aucun traceur tiers : la mesure d'audience est 100 % interne, sans cookie et anonyme (ds-analytics.js → /t). Google Analytics a été retiré le 2026-09-01. Le consentement (cookie va_consent, 6 mois) ne sert plus qu'à la carte Google Maps. #} {% block notification %}
{% endblock %} {% block banner %} {% include '_banner.html.twig' %} {% endblock %} {% block header %}
{#
Logo instagram Logo facebook
#} Vulcan'Affûtage Maison française du tranchant
{# Mega-menu « Nos Produits » — visuel carré fondu dans le verre + colonnes dépliables. Photos administrables dans /gestion/carrousel (ordre = ordre d'affichage). #}
{% set hsmSlides = header_carousel() %} {% if hsmSlides is not empty %} {% endif %}
{# ==================== Menu mobile DA 2.0 — « le tiroir de forge » ==================== Volontairement hors de
: ce header porte un z-index qui créerait un contexte d'empilement, et la bande d'annonce (z 1200) passerait devant le menu. Contenu strictement aligné sur le grand format (mega-menu « Nos Produits » compris) — l'invite carte cadeau est ici ancrée en bas à gauche, sur son propre voile. Styles : ds-v2-nav.css — comportement : ds-v2-nav.js. #}
{% endblock %} {% block body %}{% endblock %} {% block footer %} {% endblock %} {% block cookieMenu %} {# Consentement cookies DA 2.0 — état initial rendu côté serveur (cookie va_consent, 6 mois), comportement dans ds-v2-cookies.js #} {% set cookieChoice = app.request.cookies.get('va_consent') %}
{% endblock %} {% block buttonToTheTop %} {% endblock %} {% block javascripts %} {# Défilement adouci (Lenis vendored) — pose window.lenis, lu par script.js #} {% block other_javascripts %}{% endblock %} {% endblock %}