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.
🤔 Qu’est-ce qu’un type de contenu ?
Section intitulée « 🤔 Qu’est-ce qu’un type de contenu ? »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
Exemples concrets
Section intitulée « Exemples concrets »| Type de contenu | Utilisation |
|---|---|
| Article | Actualités, blog |
| Page | Pages statiques |
| Produit | Articles à vendre |
| Événement | Calendrier |
| Témoignage | Avis clients |
Types par défaut dans Drupal
Section intitulée « Types par défaut dans Drupal »Drupal installe deux types par défaut :
- Article : Pour les contenus chronologiques (blog, actualités)
- Page de base : Pour les pages statiques (À propos, Contact)
📝 Conventions de nommage importantes
Section intitulée « 📝 Conventions de nommage importantes »Exemples de correction
Section intitulée « Exemples de correction »| Nom d’affichage | Machine name généré | Machine name correct |
|---|---|---|
| Produit | produit ❌ | product ✅ |
| Article de Blog | article_de_blog ❌ | blog_article ✅ |
| Slide | slide ✅ | slide ✅ |
| Témoignage | témoignage ❌ | testimonial ✅ |
🏗️ Créer un type de contenu
Section intitulée « 🏗️ Créer un type de contenu »Via l’interface
Section intitulée « Via l’interface »-
Aller à Structure > Types de contenu (
/admin/structure/types) -
Cliquer sur Ajouter un type de contenu
-
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
-
Configurer les paramètres de soumission :
- Instructions de soumission (optionnel)
- Aperçu avant envoi : Optionnel
-
Configurer les paramètres de publication :
- Publié (par défaut)
- Promu en page d’accueil
- Épinglé en haut des listes
-
Configurer les paramètres d’affichage :
- Afficher les informations de l’auteur
- Afficher la date de publication
-
Configurer les options de menu :
- Menus disponibles : (selon besoin)
-
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 !
Configuration YAML
Section intitulée « Configuration YAML »Après création, le fichier config/sync/node.type.product.yml ressemble à :
langcode: frstatus: truedependencies: { }name: Produittype: productdescription: 'Articles de la boutique TailStore'help: ''new_revision: truepreview_mode: 1display_submitted: false🛍️ Créer le type “Produit”
Section intitulée « 🛍️ Créer le type “Produit” »Créons le type de contenu principal de TailStore :
-
Accéder à la création
/admin/structure/types/add -
Informations de base
Champ Valeur Nom Produit Nom système (Machine name) product Description Articles de la boutique TailStore -
Paramètres de publication
- ✅ Publié
- ❌ Promu en page d’accueil
- ✅ Créer une nouvelle révision
-
Paramètres d’affichage
- ❌ Afficher les informations de l’auteur
- ❌ Afficher la date de publication
-
Enregistrer
📝 Créer le type “Article de Blog”
Section intitulée « 📝 Créer le type “Article de Blog” »-
Accéder à la création
/admin/structure/types/add -
Informations de base
Champ Valeur Nom Article de Blog Nom système (Machine name) blog_article Description Articles du blog TailStore -
Paramètres de publication
- ✅ Publié
- ✅ Promu en page d’accueil (pour le bloc blog)
- ✅ Créer une nouvelle révision
-
Paramètres d’affichage
- ✅ Afficher les informations de l’auteur
- ✅ Afficher la date de publication
-
Enregistrer
🎠 Créer le type “Slide”
Section intitulée « 🎠 Créer le type “Slide” »-
Accéder à la création
/admin/structure/types/add -
Informations de base
Champ Valeur Nom Slide Nom système (Machine name) slide Description Slides du carrousel de la page d’accueil -
Paramètres de publication
- ✅ Publié
- ❌ Promu en page d’accueil
- ❌ Créer une nouvelle révision
-
Paramètres d’affichage
- ❌ Afficher les informations de l’auteur
- ❌ Afficher la date de publication
-
Enregistrer
🔧 Modifier un type existant
Section intitulée « 🔧 Modifier un type existant »Pour modifier un type de contenu :
- Aller à
/admin/structure/types - Cliquer sur Modifier à côté du type
- Effectuer les changements
- Enregistrer
Via Drush
Section intitulée « Via Drush »# Voir les informations d'un typedrush config:get node.type.product
# Modifier une propriétédrush config:set node.type.product description "Nouvelle description"🗑️ Supprimer un type de contenu
Section intitulée « 🗑️ Supprimer un type de contenu »Méthode sûre : Suppression manuelle
Section intitulée « Méthode sûre : Suppression manuelle »Pour supprimer un type de contenu en toute sécurité :
-
Vérifiez s’il y a du contenu :
Fenêtre de terminal # Compter les contenus par typedrush sql-query "SELECT type, COUNT(*) as count FROM node GROUP BY type;" -
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 -
Supprimez le type :
- Aller à
/admin/structure/types - Cliquer sur Supprimer dans le menu déroulant
- Aller à
-
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 :
# Supprimer manuellement le fichier de configrm config/sync/node.type.product.yml
# Importer (❌ PLANTE si contenu existe)drush cim -yPourquoi ç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.
💡 Solution de secours
Section intitulée « 💡 Solution de secours »Si vous avez déjà fait l’erreur :
# Recréer temporairement le typedrush php-eval "\Drupal\node\Entity\NodeType::create([ 'type' => 'product', 'name' => 'Product',])->save();"
# Supprimer le contenudrush entity:delete node --bundle=product
# Maintenant supprimer le type normalement📋 Propriétés communes
Section intitulée « 📋 Propriétés communes »Tous les types de contenu partagent des propriétés de base :
| Propriété | Description |
|---|---|
title | Titre du contenu (obligatoire) |
body | Corps du texte (optionnel, peut être supprimé) |
nid | ID du nœud (auto) |
uuid | Identifiant universel unique (auto) |
created | Date de création (auto) |
changed | Date de modification (auto) |
uid | Auteur (référence utilisateur) |
status | Publié/non publié |
promote | Promu en page d’accueil |
sticky | Épinglé |
📊 Architecture de notre projet
Section intitulée « 📊 Architecture de notre projet »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)💾 Exporter la configuration
Section intitulée « 💾 Exporter la configuration »N’oubliez pas d’exporter après chaque création :
drush cex -ygit add config/sync/node.type.*.ymlgit 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érification
Section intitulée « ✅ Vérification »Vérifiez que vos types sont créés :
drush entity:type:list --group=content | grep -E "product|blog|slide"Ou dans l’interface : /admin/structure/types
🚀 Étape suivante
Section intitulée « 🚀 Étape suivante »Passez aux Champs pour ajouter les champs personnalisés à nos types de contenu.