Skip to content

Type de ressource : Route Astro (Page SSG)
Fichier source : src/pages/blog/index.astro
Statut : Actif

Page d’index du blog affichant la liste de tous les articles. Utilise Astro content collections pour rĂ©cupĂ©rer les articles. Affiche les articles dans une grille avec l’image hĂ©ro, le titre et la date de publication.

  • Afficher la liste des articles de blog
  • Fournir une navigation vers les articles individuels
  • Tester l’intĂ©gration Astro content collections
Propriété Valeur
URL publique /blog
Mode de rendu SSG
Type Page HTML
Méthode HTTP GET
Authentification requise Non
Cache Par défaut Cloudflare
[RequĂȘte utilisateur]
│
▌
[Cloudflare Pages / Edge]
│ ‱ Routage vers Astro
▌
[Astro Route (blog/index.astro)]
│ ‱ RĂ©cupĂ©ration des articles via getCollection('blog')
│ ‱ Tri par date de publication
│ ‱ Rendu de la grille d'articles
▌
[Réponse HTML]
Composant RĂŽle Couche
blog/index.astro Définition de la route L2 (Astro)
getCollection('blog') Récupération des articles L2 (Astro)
BaseHead Métadonnées SEO globales L2 (Astro)
Header Navigation globale L2 (Astro)
Footer Pied de page global L2 (Astro)
FormattedDate Formatage des dates L2 (Astro)
---
import { Image } from 'astro:assets';
import { getCollection } from 'astro:content';
import BaseHead from '../../components/BaseHead.astro';
import Footer from '../../components/Footer.astro';
import FormattedDate from '../../components/FormattedDate.astro';
import Header from '../../components/Header.astro';
import { SITE_DESCRIPTION, SITE_TITLE } from '../../consts';
const posts = (await getCollection('blog')).sort(
(a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
);
---
<!doctype html>
<html lang="en">
<head>
<BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
<style>
main {
width: 960px;
}
ul {
display: flex;
flex-wrap: wrap;
gap: 2rem;
list-style-type: none;
margin: 0;
padding: 0;
}
ul li {
width: calc(50% - 1rem);
}
/* ... styles responsive ... */
</style>
</head>
<body>
<Header />
<main>
<section>
<ul>
{
posts.map((post) => (
<li>
<a href={`/blog/${post.id}/`}>
{post.data.heroImage && (
<Image width={720} height={360} src={post.data.heroImage} alt="" />
)}
<h4 class="title">{post.data.title}</h4>
<p class="date">
<FormattedDate date={post.data.pubDate} />
</p>
</a>
</li>
))
}
</ul>
</section>
</main>
<Footer />
</body>
</html>

Aucune requĂȘte GROQ n’est utilisĂ©e (Astro content collections).

Aucune requĂȘte secondaire n’est utilisĂ©e.

// Type CollectionEntry généré par Astro
export type CollectionEntry<TCollectionName> = {
id: string;
slug: string;
body: string;
collection: TCollectionName;
data: {
title: string;
description: string;
pubDate: Date;
updatedDate?: Date;
heroImage?: ImageMetadata;
};
};

Aucun paramĂštre d’URL n’est utilisĂ©.

Aucune query string n’est utilisĂ©e.

Code HTTP Condition Réponse
200 SuccĂšs Page HTML
500 Erreur content collections Page d’erreur Astro
Mode Cache-Control CDN-Cache-Control Rationale
SSG (build time) Non configuré Non configuré Par défaut Cloudflare

Non implémenté - pas de headers de cache explicites.

Balise Source Fallback
<title> SITE_TITLE (const) -
<meta name="description"> SITE_DESCRIPTION (const) -
Meta tags globaux BaseHead -
  • ✅ Cette route est-elle incluse dans le sitemap ? Oui
  • ✅ FrĂ©quence de mise Ă  jour : daily
  • ✅ PrioritĂ© : 0.8
  • ❌ Cette route est-elle indexĂ©e par Pagefind ? Non (Pagefind non configurĂ©)
Composant Fichier RĂŽle Hydratation
BaseHead src/components/BaseHead.astro Métadonnées SEO Aucune
Header src/components/Header.astro Navigation globale Aucune
Footer src/components/Footer.astro Pied de page global Aucune
FormattedDate src/components/FormattedDate.astro Formatage des dates Aucune
Condition Comportement
AccĂšs public Page accessible sans authentification

Non applicable (pas de paramĂštres d’entrĂ©e).

Non implémenté dans cette route (à configurer via Middleware Cloudflare).

SymptĂŽme Cause probable Solution
Articles non affichés Collection blog vide Ajouter des articles dans src/content/blog/
Images non affichées Images manquantes Vérifier que les images existent dans src/content/blog/
Terminal window
# Logs de développement
npm run dev
# Logs de build
npm run build -- --verbose
# Vérification des types
npx astro check
Terminal window
# Test de la route en local
curl -I http://localhost:4321/blog
  • ✅ Utilisation d’Astro content collections pour les articles
  • ✅ Tri par date de publication
  • ✅ Images optimisĂ©es via Astro Assets
  • ✅ Pas de JavaScript inutile
  • ✅ Images optimisĂ©es (width, height spĂ©cifiĂ©s)
  • ✅ SSG pour le rendu statique
  • ✅ Ajouter des articles dans src/content/blog/
  • ✅ VĂ©rifier les images avant publication
  • Pagination pour les articles
  • Filtrage par catĂ©gorie
  • Indexation Pagefind
  • Support du mode preview
  • ❌ Pas de pagination
  • ❌ Pas de filtres
  • ❌ Pas de support du mode preview
  • ❌ Pas d’indexation Pagefind
  • ❌ Langue hardcodĂ©e en ‘en’
  • Documentation Astro : Routing
  • Documentation Astro : Content Collections
  • Fichiers concernĂ©s :
    • src/pages/blog/index.astro
    • src/content/blog/
    • src/components/BaseHead.astro
    • src/components/Header.astro
    • src/components/Footer.astro
    • src/components/FormattedDate.astro
Date Version Description Auteur
2026-09-15 1.0 Création initiale Devin
Edit page

Last updated: