Aller au contenu

Étape 2 - Types de Contenu & Médias

⏱️ Durée estimée : 3h30

À la fin de cette étape, vous serez capable de :

  • ✅ Créer des types de contenu personnalisés
  • ✅ Ajouter et configurer différents types de champs
  • ✅ Comprendre les modes d’affichage (view modes / form modes)
  • ✅ Gérer les médias (images, documents)
  • ✅ Créer les types de contenu du projet TailStore
  • Étape 1 terminée (Drupal installé et fonctionnel)
  • Accès à l’administration Drupal
  • Drush configuré

Contrairement à ce que l’on pourrait penser, Drupal ne crée pas automatiquement les pages principales par défaut. Cependant, il est recommandé de créer ces trois pages essentielles pour une bonne UX :

  • Type : Page de base
  • Alias d’URL : /home (recommandé) ou /
  • Rôle : Page d’accueil du site
  • Configuration : /admin/config/system/site-information → “Page d’accueil par défaut”
  • Type : Page de base
  • Alias d’URL : /404
  • Contenu : Message d’erreur + lien vers l’accueil + recherche
  • Configuration : /admin/config/system/site-information → “Page par défaut ‘Page non trouvée (404)’”
  • Conseil : Rendez-la utile avec une barre de recherche et des liens vers les sections populaires
  • Type : Page de base
  • Alias d’URL : /403
  • Contenu : Message d’erreur + explication + lien de connexion
  • Configuration : /admin/config/system/site-information → “Page par défaut ‘Accès refusé (403)’”
  • Conseil : Pour les utilisateurs non connectés, proposez un lien vers la page de connexion

1. Types de contenu

Comprendre et créer des types de contenu (node types). Voir →

2. Champs

Ajouter et configurer tous les types de champs. Voir →

3. Modes d'affichage

Gérer les form modes et view modes. Voir →

4. Médias

Configurer la gestion des médias. Voir →

Dans cette étape, nous allons créer les trois types de contenu principaux de notre boutique :

Le type de contenu principal pour les articles de la boutique.

ChampTypeDescription
TitreTextNom du produit
BodyText (long)Description
field_imagesMedia (Image)Galerie photos (multiple)
field_priceDecimalPrix régulier
field_sale_priceDecimalPrix soldé (optionnel)
field_skuTextCode produit
field_categoryEntity ReferenceCatégorie(s)
field_brandEntity ReferenceMarque
field_sizesEntity ReferenceTailles disponibles
field_colorsEntity ReferenceCouleurs disponibles
field_availabilityBooleanEn stock ?
field_materialTextMatière

Pour la section blog de la boutique.

ChampTypeDescription
TitreTextTitre de l’article
BodyText (long)Contenu
field_imageMedia (Image)Image principale
field_blog_categoryEntity ReferenceCatégorie blog

Pour le carrousel de la page d’accueil.

ChampTypeDescription
field_titleTextTitre du slide
field_subtitleTextSous-titre
field_imageMedia (Image)Image de fond
field_linkLinkLien du CTA
field_cta_textTextTexte du bouton
┌─────────────────┐ ┌──────────────────┐
│ Product │────▶│ Catégorie (Tax) │
│ │ └──────────────────┘
│ field_brand ──┼────▶┌──────────────────┐
│ │ │ Marque (Tax) │
│ field_sizes ──┼────▶└──────────────────┘
│ │ ┌──────────────────┐
│ field_colors ──┼────▶│ Taille (Tax) │
│ │ └──────────────────┘
│ field_images ──┼────▶┌──────────────────┐
│ │ │ Couleur (Tax) │
└─────────────────┘ └──────────────────┘
┌──────────────────┐
┌─────────────────┐ │ Media Image │
│ Blog Article │────▶└──────────────────┘
│ │
│ field_category ─┼────▶┌──────────────────┐
│ │ │ Cat. Blog (Tax) │
└─────────────────┘ └──────────────────┘
Fenêtre de terminal
# Lister les types de contenu
drush entity:type:list --group=content
# Voir les champs d'un type
drush field:list node.product
# Exporter la configuration
drush cex -y

Pour chaque type de contenu, nous suivrons ce processus :

  1. Créer le type de contenu (/admin/structure/types/add)
  2. Ajouter les champs (/admin/structure/types/manage/{type}/fields)
  3. Configurer le formulaire (/admin/structure/types/manage/{type}/form-display)
  4. Configurer l’affichage (/admin/structure/types/manage/{type}/display)
  5. Exporter la configuration (drush cex -y)
  6. Créer du contenu de test

Commencez par comprendre les Types de contenu dans Drupal.