logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Programmation de champs personnalisés dans votre type de contenu

04/07/2025, by Ivan

Parfois, lorsque vous extrayez un type de contenu depuis un module personnalisé, vous pouvez également ajouter des champs liés à ce type de contenu. La possibilité de créer automatiquement ces champs vous permet de supprimer et réinstaller sur plusieurs sites sans laisser de champs inutiles et en garantissant que vous n’oublierez pas de les ajouter. Il existe deux façons d’ajouter ces champs dans votre base de code, que nous allons examiner.

Pré-requis

  • Drupal 8.0.x installé.
  • Avoir un module personnalisé (le nom du module utilisé ici est foobar).
  • Avoir un type de contenu personnalisé dans ce module (suivez les instructions sur la page parente. Le nom du type de contenu sera Car Brand).

Ajouter des champs supplémentaires à notre type de contenu

Il y a deux méthodes pour cette étape. Vous pouvez utiliser l’interface utilisateur pour créer des champs et exporter la configuration dans des fichiers, ou vous pouvez écrire les fichiers vous-même. Je préfère la première méthode pour ne rien oublier, mais les champs exportés commencent par « field_ » et non par « foobar_car_brand_ », ce qui ne les lie pas directement à notre type. Ici, nous verrons la méthode manuelle en codant les champs dans votre module personnalisé.

Coder manuellement les champs dans votre module

Cette méthode requiert plus de connaissances et une bonne maîtrise de ce que doit faire le champ. Chaque champ ajouté doit avoir deux fichiers YAML de configuration :

  • field.storage.node.field_brand_information.yml : définit le stockage du champ.
  • field.field.node.car_brand.field_brand_information.yml : attache le champ au type de contenu.

Supprimer le type de contenu personnalisé

Si vous avez activé le module foobar précédemment, désactivez-le maintenant.

foobar/config/install/field.storage.node.field_brand_information.yml

Ce fichier informe Drupal de la création du champ :

# field.storage.node.field_brand_information.yml
langcode: en
status: true
dependencies:
  module:
    - node
    - text
id: node.field_brand_information
field_name: field_brand_information
entity_type: node
type: text_with_summary
settings: {  }
module: text
locked: false
cardinality: 1
translatable: true
indexes: {  }
persist_with_no_fields: false
custom_storage: false

foobar/config/install/field.field.node.car_brand.field_brand_information.yml

Ce fichier attache le champ au type de contenu Car Brand :

# field.field.node.car_brand.field_brand_information.yml
langcode: en
status: true
dependencies:
  config:
    - field.storage.node.field_brand_information
    - node.type.car_brand
  module:
    - text
id: node.car_brand.field_brand_information
field_name: field_brand_information
entity_type: node
bundle: car_brand
label: 'Brand Information'
description: 'More specific information about the car brand'
required: false
translatable: false
default_value: {  }
default_value_callback: ''
settings:
  display_summary: false
field_type: text_with_summary

foobar/config/install/core.entity_form_display.node.car_brand.default.yml | foobar/config/install/core.entity_view_display.node.car_brand.default.yml

Ces deux fichiers doivent être mis à jour pour inclure tous les nouveaux champs ajoutés. J’ai ajouté deux champs supplémentaires nommés « Additional_field_1 » et « Additional_field_2 » pour illustrer plusieurs champs.

Note : si vous ne souhaitez pas créer ces champs additionnels, supprimez leurs dépendances et références dans le code ci-dessous.

# core.entity_view_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
  config:
    - field.field.node.car_brand.field_brand_information
    - field.field.node.car_brand.field_additional_field_1
    - field.field.node.car_brand.field_additional_field_2
    - node.type.car_brand
  module:
    - file
    - text
    - user
_core:
  default_config_hash: Nfnv6VMugBKl6EOqi_U0I_LQ1ZQpbNDN3a9GXHWUBz4
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
  field_brand_information:
    weight: 101
    label: above
    settings: {  }
    third_party_settings: {  }
    type: text_default
  field_additional_field_1:
    weight: 103
    label: above
    settings:
      link_to_entity: false
    third_party_settings: {  }
    type: string
  field_additional_field_2:
    weight: 102
    label: above
    settings: {  }
    third_party_settings: {  }
    type: file_default
  links:
    weight: 100
hidden: {  }
# core.entity_form_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
  config:
    - field.field.node.car_brand.field_brand_information
    - field.field.node.car_brand.field_additional_field_1
    - field.field.node.car_brand.field_additional_field_2
    - node.type.car_brand
  module:
    - file
    - path
    - text
_core:
  default_config_hash: qZE-qJ04DTTNggVVQdVOPQmpE_I69GQ_LqB32kXivVg
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
  created:
    type: datetime_timestamp
    weight: 2
    settings: {  }
    third_party_settings: {  }
  field_brand_information:
    weight: 7
    settings:
      rows: 9
      summary_rows: 3
      placeholder: ''
    third_party_settings: {  }
    type: text_textarea_with_summary
  field_additional_field_1:
    weight: 6
    settings:
      size: 60
      placeholder: ''
    third_party_settings: {  }
    type: string_textfield
  field_additional_field_2:
    weight: 8
    settings:
      progress_indicator: throbber
    third_party_settings: {  }
    type: file_generic
  path:
    type: path
    weight: 5
    settings: {  }
    third_party_settings: {  }
  promote:
    type: boolean_checkbox
    settings:
      display_label: true
    weight: 3
    third_party_settings: {  }
  sticky:
    type: boolean_checkbox
    settings:
      display_label: true
    weight: 4
    third_party_settings: {  }
  title:
    type: string_textfield
    weight: 0
    settings:
      size: 60
      placeholder: ''
    third_party_settings: {  }
  uid:
    type: entity_reference_autocomplete
    weight: 1
    settings:
      match_operator: CONTAINS
      size: 60
      placeholder: ''
    third_party_settings: {  }
hidden: {  }

Activer le type de contenu personnalisé

Activez maintenant le module foobar. Si vous allez sur la page de création de contenu, vous pourrez créer un nouveau nœud de type « Car Brand » avec le champ « Brand Information ».

Nous verrons l’ajout de ces champs via l’interface utilisateur sur la page suivante.