{% extends "base.html" %} {% block htmltitle %} {# Override : Zensical natif duplique site_name quand page.meta.title == site_name (cas homepage) #} {# Override: native Zensical duplicates site_name when page.meta.title == site_name (homepage case) #} {% if page.is_homepage or page.url == "" %} {{ config.site_name }} {% elif page.meta and page.meta.title %} {{ page.meta.title }} - {{ config.site_name }} {% elif page.title %} {{ page.title | striptags }} - {{ config.site_name }} {% else %} {{ config.site_name }} {% endif %} {% endblock %} {% block extrahead %} {% if page.meta %} {% set page_title = page.meta.title or page.title or config.site_name %} {% set page_desc = page.meta.description or page.meta.summary or page.meta.excerpt or config.site_description %} {% set page_image = page.meta.image or "" %} {% else %} {% set page_title = page.title or config.site_name %} {% set page_desc = config.site_description %} {% set page_image = "" %} {% endif %} {% set page_url = page.canonical_url or "" %} {% set base_url = config.site_url or "" %} {% set is_home = (page.url == "" or page.is_homepage) %} {# === Détection du type Schema.org === Priorité : schema_type explicite > event_date > author+date > WebPage/Org default Priority: explicit schema_type > event_date > author+date > WebPage/Org default #} {% if is_home %} {% set schema_type = (page.meta.schema_type if page.meta and page.meta.schema_type else "WebSite") %} {% set og_type = "website" %} {% else %} {% if page.meta and page.meta.schema_type %} {% set schema_type = page.meta.schema_type %} {% elif page.meta and page.meta.event_date %} {% set schema_type = "Event" %} {% elif page.meta and (page.meta.author or page.meta["auteur·ice"]) and page.meta.date %} {% set schema_type = "Article" %} {% else %} {% set schema_type = "WebPage" %} {% endif %} {% set og_type = "article" if schema_type in ["Article", "BlogPosting", "NewsArticle"] else "website" %} {% endif %} {% if page_url %}{% endif %} {% if page_image and base_url %}{% endif %} {% if config.site_name %}{% endif %} {% if page_image and base_url %}{% endif %} {# === Schema.org JSON-LD === Home : Organization (ou type spécialisé EducationalOrganization, NGO…) + WebSite implicite Sous-page : WebPage / Article / Event + BreadcrumbList automatique #} {# === BreadcrumbList pour sous-pages — aide Google à comprendre la hiérarchie === On utilise page.ancestors (variable native Zensical) pour avoir titres + URLs propres. On filtre les ancestors sans URL (sections sans page d'index) avec selectattr, sinon Schema.org BreadcrumbList rejette les positions non-consécutives. On construit les URLs absolues via base_url + ancestor.url plutôt que le filter |url qui produit du relatif (ex: ../../../). #} {% if not is_home and base_url and page_url %} {% if base_url[-1:] == "/" %}{% set _base_root = base_url[:-1] %}{% else %}{% set _base_root = base_url %}{% endif %} {% set _valid_ancestors = (page.ancestors or []) | selectattr("url") | list %} {% endif %} {% endblock %} {% block content %} {% if page.url == "" %} {# === HERO === #} {% if page.meta and page.meta.image %}