Création d’un type de contenu personnalisé dans Drupal 8
Cette page est une copie de la configuration « Enabled by Default » dans un module Drupal 8. Elle doit être considérée comme une référence amortie.
La création d’un type de contenu personnalisé est devenue assez simple grâce à la nouvelle API de configuration introduite avec Drupal 8.
Prérequis
- Drupal 8.0.x installé
- Avoir son propre module (le nom du module utilisé dans cet exemple est foobar)
Création du type de contenu personnalisé
Comme mentionné dans l’introduction, créer un type de contenu personnalisé consiste à créer plusieurs fichiers YAML qui contiennent toutes les configurations nécessaires. Dans cet exemple, nous créerons un type de contenu Car Brand (Marque de voiture), qui comportera deux champs par défaut : le corps et le titre.
foobar/config/install/node.type.car_brand.yml
Ce fichier indique à Drupal qu’il doit créer un nouveau type de contenu.
Note : gardez à l’esprit que nous ajoutons une dépendance forcée au module foobar. Sans cette dépendance, Drupal ne supprimera pas le type de contenu lorsque notre module sera désinstallé. Lorsqu’un développeur décide que ce module n’est plus nécessaire, nous ne voulons plus que ce type de contenu soit accessible.
# node.type.car_brand.yml langcode: en status: true dependencies: enforced: module: - foobar # C’est le nom du module utilisé dans cet exemple name: 'Car Brand' type: car_brand description: 'Type de contenu utilisé pour fournir des informations supplémentaires sur <em>les marques de voiture</em>' help: '' new_revision: false preview_mode: 1 display_submitted: true
foobar/config/install/field.field.node.car_brand.body.yml
Ce fichier ajoute le champ body à notre type de contenu.
# field.field.node.car_brand.body.yml langcode: en status: true dependencies: config: - field.storage.node.body - node.type.car_brand module: - text id: node.car_brand.body field_name: body entity_type: node bundle: car_brand label: Body description: 'Informations plus spécifiques sur la marque de voiture.' required: false translatable: true default_value: { } default_value_callback: '' settings: display_summary: true field_type: text_with_summary
foobar/config/install/core.entity_view_display.node.car_brand.teaser.yml
Ce fichier informe Drupal sur la manière d’afficher le teaser de notre type de contenu personnalisé.
# core.entity_view_display.node.car_brand.teaser.yml langcode: en status: true dependencies: config: - core.entity_view_mode.node.teaser - field.field.node.car_brand.body - node.type.car_brand module: - text - user id: node.car_brand.teaser targetEntityType: node bundle: car_brand mode: teaser content: body: label: hidden type: text_summary_or_trimmed weight: 101 settings: trim_length: 600 third_party_settings: { } links: weight: 100 hidden: { }
foobar/config/install/core.entity_view_display.node.car_brand.default.yml
Ce fichier indique à Drupal comment afficher le contenu de notre type de contenu par défaut.
# core.entity_view_display.node.car_brand.default.yml langcode: en status: true dependencies: config: - field.field.node.car_brand.body - node.type.car_brand module: - text - user id: node.car_brand.default targetEntityType: node bundle: car_brand mode: default content: body: label: hidden type: text_default weight: 101 settings: { } third_party_settings: { } links: weight: 100 hidden: { }
foobar/config/install/core.entity_form_display.node.car_brand.default.yml
Ce fichier informe Drupal sur la manière dont le formulaire de création d’un nouveau nœud pour notre type de contenu personnalisé doit s’afficher.
# core.entity_form_display.node.car_brand.default.yml langcode: en status: true dependencies: config: - field.field.node.car_brand.body - node.type.car_brand module: - text - user id: node.car_brand.default targetEntityType: node bundle: car_brand mode: default content: body: label: hidden type: text_textarea_with_summary weight: 101 settings: { } third_party_settings: { } links: weight: 100 hidden: { }
Activer le type de contenu personnalisé
Maintenant que nous avons nos fichiers de configuration, nous devons informer Drupal de notre nouveau type de contenu. Cela se fait en réinstallant le module. Si votre module n’a jamais été activé, activez-le simplement. S’il était déjà activé, désinstallez-le puis activez-le à nouveau.
Si vous allez maintenant sur la page « Créer du contenu », vous verrez que vous pouvez créer un nouveau nœud du type de contenu « Car Brand ».