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 ».