{% extends 'base.html.twig' %} {# Page 15 — Article de blog (T6) URL : /blog/{slug}/ Voir docs/pages.md page 15. #} {# Title and meta come from the dedicated Article fields (metaTitle, metaDescription). The entity falls back to the H1 plus the brand and to the excerpt shortened on a word boundary, so nothing is ever cut mid-word. #} {% set _seo_title = article.seoTitle %} {% set _seo_desc = article.seoDescription %} {% set _seo_img = article.imageUrl ? absolute_url(asset(article.imageUrl)) : '' %} {% set _seo_url = absolute_url(path('app_blog_article', {slug: article.slug})) %} {% block title %}{{ _seo_title }}{% endblock %} {% block head_extra %} {% if _seo_img %}{% endif %} {% if _seo_img %}{% endif %} {% endblock %} {% block javascripts %} {{ parent() }} {# Article JSON-LD (LocalBusiness + BreadcrumbList sont déjà injectés globalement). #} {% set imgUrl = article.imageUrl ? absolute_url(asset(article.imageUrl)) : '' %} {{ json_ld(schema_article( article.title, article.excerpt, imgUrl, article.publishedAt, article.updatedAt, article.authorName )) }} {# FAQPage JSON-LD, built from the FAQ entered in the back-office. Fallback on the legacy accordion still embedded in the body for the articles not migrated to Article::faq yet. #} {% set _faqSchema = article.faq|length > 0 ? schema_faq(article.faq) : schema_faq_from_content(article.content) %} {% if _faqSchema %} {{ json_ld(_faqSchema) }} {% endif %} {% endblock %} {% block body %}
{% include '_components/breadcrumb.html.twig' %} {# Encart de relecture. Jamais rendu en production, jamais indexé. Destiné à un technicien TCA qui ne connaît pas le projet. #} {% if app.environment != 'prod' and article.reviewNotes %} {% include 'blog/_review_panel.html.twig' with { notes: article.reviewNotes } only %} {% endif %}
{{ article.category }}

{{ article.title }}

{% if article.imageUrl %}
{{ article.imageAlt|default(article.title) }}
{% endif %}
{% set _body = article.faq|length > 0 ? article.content|strip_faq_section : article.content %} {{ _body|resolve_blog_links|raw }} {# FAQ — même markup que l'accordéon des pages services (CLAUDE.md §6.12). Le sommaire de l'article pointe sur #faq. #} {% if article.faq|length > 0 %}

Questions fréquentes

{% for item in article.faq %}
{{ item.q }}
{% for paragraph in item.a|split("\n\n") %} {% if paragraph|trim %}

{{ paragraph|trim|nl2br }}

{% endif %} {% endfor %}
{% endfor %}
{% endif %}
{% if article.authorName %} {% endif %} {# CTA vers la page pilier #} {% if article.pillarRouteName %}
Besoin d'une intervention ?

Découvrez notre service complet

TCA Industries assure ce service en Auvergne. Devis gratuit, délai d'intervention adapté à l'urgence.

{% endif %}
{# Articles liés #} {% if related|length > 0 %}
{% endif %}
{% endblock %}