Skip to content

Types de contenu

This content is not available in your language yet.

Les types de contenu (content types ou node types) sont la base de la modélisation dans Drupal. Chaque type définit une structure de données réutilisable.

Un type de contenu est un modèle pour créer du contenu. Il définit :

  • Les champs disponibles (titre, image, prix…)
  • Les paramètres de publication
  • Les modes d’affichage
  • Les permissions associées
Type de contenuUtilisation
ArticleActualités, blog
PagePages statiques
ProduitArticles à vendre
ÉvénementCalendrier
TémoignageAvis clients

Drupal installe deux types par défaut :

  • Article : Pour les contenus chronologiques (blog, actualités)
  • Page de base : Pour les pages statiques (À propos, Contact)
Nom d’affichageMachine name généréMachine name correct
Produitproduitproduct
Article de Blogarticle_de_blogblog_article
Slideslideslide
Témoignagetémoignagetestimonial
  1. Aller à Structure > Types de contenu (/admin/structure/types)

  2. Cliquer sur Ajouter un type de contenu

  3. Remplir les informations de base :

    • Nom : Produit
    • Nom système (machine name) : product (généré automatiquement - corrigez si nécessaire)
    • Description : Articles de la boutique TailStore
  4. Configurer les paramètres de soumission :

    • Instructions de soumission (optionnel)
    • Aperçu avant envoi : Optionnel
  5. Configurer les paramètres de publication :

    • Publié (par défaut)
    • Promu en page d’accueil
    • Épinglé en haut des listes
  6. Configurer les paramètres d’affichage :

    • Afficher les informations de l’auteur
    • Afficher la date de publication
  7. Configurer les options de menu :

    • Menus disponibles : (selon besoin)
  8. Cliquer sur Enregistrer et gérer les champs

Important

N’oubliez pas de corriger le machine name si Drupal génère un nom français !

Après création, le fichier config/sync/node.type.product.yml ressemble à :

langcode: fr
status: true
dependencies: { }
name: Produit
type: product
description: 'Articles de la boutique TailStore'
help: ''
new_revision: true
preview_mode: 1
display_submitted: false

Créons le type de contenu principal de TailStore :

  1. Accéder à la création

    /admin/structure/types/add

  2. Informations de base

    ChampValeur
    NomProduit
    Nom système (Machine name)product
    DescriptionArticles de la boutique TailStore
  3. Paramètres de publication

    • ✅ Publié
    • ❌ Promu en page d’accueil
    • ✅ Créer une nouvelle révision
  4. Paramètres d’affichage

    • ❌ Afficher les informations de l’auteur
    • ❌ Afficher la date de publication
  5. Enregistrer

  1. Accéder à la création

    /admin/structure/types/add

  2. Informations de base

    ChampValeur
    NomArticle de Blog
    Nom système (Machine name)blog_article
    DescriptionArticles du blog TailStore
  3. Paramètres de publication

    • ✅ Publié
    • ✅ Promu en page d’accueil (pour le bloc blog)
    • ✅ Créer une nouvelle révision
  4. Paramètres d’affichage

    • ✅ Afficher les informations de l’auteur
    • ✅ Afficher la date de publication
  5. Enregistrer

  1. Accéder à la création

    /admin/structure/types/add

  2. Informations de base

    ChampValeur
    NomSlide
    Nom système (Machine name)slide
    DescriptionSlides du carrousel de la page d’accueil
  3. Paramètres de publication

    • ✅ Publié
    • ❌ Promu en page d’accueil
    • ❌ Créer une nouvelle révision
  4. Paramètres d’affichage

    • ❌ Afficher les informations de l’auteur
    • ❌ Afficher la date de publication
  5. Enregistrer

Pour modifier un type de contenu :

  1. Aller à /admin/structure/types
  2. Cliquer sur Modifier à côté du type
  3. Effectuer les changements
  4. Enregistrer
Fenêtre de terminal
# Voir les informations d'un type
drush config:get node.type.product
# Modifier une propriété
drush config:set node.type.product description "Nouvelle description"

Pour supprimer un type de contenu en toute sécurité :

  1. Vérifiez s’il y a du contenu :

    Fenêtre de terminal
    # Compter les contenus par type
    drush sql-query "SELECT type, COUNT(*) as count FROM node GROUP BY type;"
  2. Supprimez le contenu au préalable :

    Fenêtre de terminal
    # Via l'interface : /admin/content
    # OU via Drush (supprime TOUS les contenus du type) :
    drush entity:delete node --bundle=product
  3. Supprimez le type :

    • Aller à /admin/structure/types
    • Cliquer sur Supprimer dans le menu déroulant
  4. Exportez la configuration :

    Fenêtre de terminal
    drush cex -y

❌ Méthode dangereuse : Suppression manuelle des fichiers YAML

Section intitulée « ❌ Méthode dangereuse : Suppression manuelle des fichiers YAML »

NE FAITES PAS ÇA :

Fenêtre de terminal
# Supprimer manuellement le fichier de config
rm config/sync/node.type.product.yml
# Importer (❌ PLANTE si contenu existe)
drush cim -y

Pourquoi ça plante ?

  • Vous supprimez directement le fichier YAML
  • Drupal essaie de supprimer le type de contenu à l’import
  • Mais il y a encore des nœuds qui référencent ce type
  • Contrainte de base de données violée → erreur fatale

Note : Si vous faites les modifications via l’interface et exportez (drush cex), il n’y a aucun danger.

Si vous avez déjà fait l’erreur :

Fenêtre de terminal
# Recréer temporairement le type
drush php-eval "
\Drupal\node\Entity\NodeType::create([
'type' => 'product',
'name' => 'Product',
])->save();
"
# Supprimer le contenu
drush entity:delete node --bundle=product
# Maintenant supprimer le type normalement

Tous les types de contenu partagent des propriétés de base :

PropriétéDescription
titleTitre du contenu (obligatoire)
bodyCorps du texte (optionnel, peut être supprimé)
nidID du nœud (auto)
uuidIdentifiant universel unique (auto)
createdDate de création (auto)
changedDate de modification (auto)
uidAuteur (référence utilisateur)
statusPublié/non publié
promotePromu en page d’accueil
stickyÉpinglé

Après cette section, vous aurez créé :

Types de contenu
├── product # Produits de la boutique
│ └── (champs à ajouter)
├── blog_article # Articles du blog
│ └── (champs à ajouter)
└── slide # Carrousel page d'accueil
└── (champs à ajouter)

N’oubliez pas d’exporter après chaque création :

Fenêtre de terminal
drush cex -y
git add config/sync/node.type.*.yml
git commit -m "feat: add product, blog_article and slide content types"

⚠️ Import de configuration dangereux

Scénarios :

  • Sûr : Modifications via interface → drush cex → OK
  • Dangereux : Suppression directe du fichier YAML → drush cim → PLANTE

Vérifiez que vos types sont créés :

Fenêtre de terminal
drush entity:type:list --group=content | grep -E "product|blog|slide"

Ou dans l’interface : /admin/structure/types

Passez aux Champs pour ajouter les champs personnalisés à nos types de contenu.