engine/⚙️ ARTEFACT GÉNÉRÉ — ne pas éditer à la main. Régénérer :
npm run docs:engine(extrait depuis.eleventy.js+engine/).
| Filtre | Rôle | .eleventy.js |
|---|---|---|
absoluteUrl | — | L195 |
byAuthor | Filtre par data[author] === id. | L245 |
byCategory | Filtre une collection Eleventy par data[key] === val. | L240 |
dateFr | — | L207 |
dateISO | — | L202 |
excludeUrl | Exclut un élément de collection par son url. | L250 |
faqJsonLd | — | L258 |
find | Trouve le 1er élément d'un tableau d'objets par clé (objet simple). | L235 |
heroImageUrl | Résout le chemin hero vers la variante optimisée générée par eleventy-img. Reproduit la logique du filenameFormat ci-dessus : slug | L187 |
injectProductIcons | Injection des logos produits dans les tableaux comparatifs et H2/H3. Lit le champ front-matter products[] et matche les noms dan | L303 |
injectSponsoredLinks | Injection des liens sponsorisés (filtre principal du métier). | L294 |
itemListElements | ItemList JSON-LD pour les comparatifs top-N (champ front-matter comparison.rows). Position + nom du modèle uniquement : PAS de a | L269 |
jsonld | — | L254 |
keys | — | L222 |
limit | — | L232 |
readingTime | — | L213 |
tableOfContents | Sommaire (TOC) : extrait les H2/H3 (avec leur id markdown-it-anchor) du HTML rendu. Lit les IDs RÉELS émis → pas de problème de pa | L277 |
tpl | Interpolation de variables {name} {email} {operator} {domain} {year} dans les blocs de thème. | L228 |
wordCount | — | L218 |
| Transform | Rôle | .eleventy.js |
|---|---|---|
tableWrap | --- Wrap | L433 |
externalLinks | --- Liens externes : rel="nofollow noopener" target="_blank" --- Liens éditoriaux (sources citées) en nofollow → conserve le link | L442 |
htmlmin | --- Minification HTML en production --- | L455 |
| Collection | Rôle | .eleventy.js |
|---|---|---|
article | --- Collections --- | L370 |
categoryPages | — | L377 |
activeCategories | Catégories actives = celles du thème ayant ≥ 1 article (évite le thin content). | L404 |
engine/_includes/layouts/) : article.njk, author.njk, base.njk, category.njk, home.njk, page.njk Tous étendent layouts/base.njk. Le front-matter layout: layouts/xxx.njk choisit le squelette (home / category / article / page / author).engine/_includes/blocks/) : article-card.njk, author-box.njk, breadcrumb.njk, categories-glass.njk, dossiers.njk, faq.njk, footer-magazine-bourse.njk, footer.njk, header.njk, hero-magazine-bourse.njk, hero.njk, newsletter-sidebar.njk, pagination.njk, prose.njk, related.njk, sidebar-reading-list.njk, toc.njk, trust-section.njk, video.njkfingerprint.* reconnues (anti-footprint)Posées dans blogs/{domain}/blog.json > fingerprint, consommées par les templates. 21 clés détectées :
| Clé | Fichiers consommateurs |
|---|---|
article_variant | _includes/layouts/article.njk |
css_decoy | _includes/layouts/base.njk |
css_salt | _includes/layouts/base.njk |
faq_id | _includes/blocks/faq.njk |
four04 | pages/404.njk |
headers | pages/headers.njk |
hero_size | _includes/blocks/hero.njk |
home_intro | _includes/layouts/home.njk |
js | _data/inlineJs.js |
jsonld | _includes/layouts/base.njk |
layout | _includes/layouts/article.njk, _includes/layouts/base.njk, _includes/layouts/home.njk |
llms | pages/llms.njk |
main_id | _includes/layouts/base.njk |
mobile_nav_id | _includes/blocks/header.njk |
nav_style | _data/site.js, _includes/blocks/header.njk |
og_order | _includes/layouts/base.njk |
robots_bots | pages/robots.njk |
robots_meta | _includes/layouts/base.njk |
rss_suffix | _includes/layouts/base.njk |
security | _includes/blocks/video.njk, pages/headers.njk |
skip_link | _includes/layouts/base.njk |
selectattr/rejectattr/map/striptags → utiliser les filtres maison ci-dessus.canonical = https://{domain}{page.url}..txt/.xml (robots, sitemap, llms) : penser à | safe.build:content → engine/blogs-build/ (GÉNÉRÉ) → build:css → build:11ty → build:clean ; CSS Tailwind inliné dans <head> ; sortie engine/_site/<domain>/.