Skip to content

Type de ressource : Schéma Sanity (Document / Object / Block)
Fichier source : sanity-studio/schemas/[filename].ts
Statut : [Actif / Déprécié / En développement]

[Description concise du rôle de ce schéma dans l’architecture du site]

  • [Cas d’usage principal]
  • [Cas d’usage secondaire si applicable]
  • Référence depuis : [Liste des schémas qui référencent celui-ci]
  • Référence vers : [Liste des schémas référencés par celui-ci]
Nom du champ Type Obligatoire Description Validation
fieldName string ✅ [Description] [Règles de validation]
slug slug ✅ [Description] source: 'title'
status string ✅ [Description] Options: draft, published, archived
Nom du champ Type Obligatoire Description
seo.metaTitle string ❌ Meta title pour SEO (fallback: title)
seo.metaDescription text ❌ Meta description (fallback: excerpt)
seo.ogImage image ❌ Image Open Graph (fallback: mainImage)

2.3. Champs de contenu riche (si applicable)

Section titled “2.3. Champs de contenu riche (si applicable)”
Nom du champ Type Description
body array Contenu Portable Text (blocs + spans)
pageBuilder array Liste de blocs PageBuilder (hero, features, etc.)
sanity-studio/schemas/[filename].ts
import { defineField, defineType } from 'sanity';
export default defineType({
name: '[schemaName]',
title: '[Titre lisible]',
type: 'document', // ou 'object', 'block'
fields: [
// ... définition des champs
],
preview: {
select: {
title: 'title',
subtitle: 'publishedAt',
media: 'mainImage',
},
},
});
*[_type == "[schemaName]" && status == "published"] {
_id,
title,
slug,
publishedAt,
mainImage,
excerpt
} | order(publishedAt desc)
*[_type == "[schemaName]" && slug.current == $slug][0] {
...,
author->{name, image},
categories[]->{title, slug}
}



5. Typage TypeScript (génération automatique)

Section titled “5. Typage TypeScript (génération automatique)”
// src/types/sanity.d.ts (généré via sanity-typegen)
export type [SchemaName] = {
_id: string;
_type: '[schemaName]';
title: string;
slug: { _type: 'slug'; current: string };
publishedAt: string;
status: 'draft' | 'published' | 'archived';
mainImage?: ImageAsset;
excerpt?: string;
seo?: SeoObject;
};

src/pages/[route]/[slug].astro

---
import { getSanityClient } from '../../lib/sanity';
import type { [SchemaName] } from '../../types/sanity';
const client = getSanityClient(Astro);
const data = await client.fetch<[SchemaName]>(/* GROQ query */);
---
<!-- Rendu du contenu -->
  • [Règle 1 : ex. title est toujours obligatoire]
  • [Règle 2 : ex. slug doit être unique]
  • [Règle 3 : ex. status a une valeur par défaut draft]
  • [Conseil 1 pour les contributeurs]
  • [Conseil 2 pour les contributeurs]
  • [Point technique important : ex. performance, cache, etc.]
  • [Point technique important : ex. gestion des médias]
Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
YYYY-MM-DD 1.1 [Modification] [Nom]
  • Documentation Sanity : [Lien vers docs officielles si pertinent]
  • Schémas dépendants : [Liste des schémas liés]
  • Pages Astro consommatrices : [Liste des fichiers .astro]
  • Composants d’affichage : [Liste des composants utilisés]
Edit page

Last updated: