logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Programmazione di campi personalizzati nel tuo tipo di contenuto

30/09/2025, by Ivan

A volte, quando estrai un tipo di contenuto da un modulo personalizzato, puoi anche aggiungere campi relativi a quel tipo di contenuto. La possibilità di creare automaticamente campi ti consente di rimuovere e reinstallare su più siti senza lasciare campi inutili e garantendo che tu non dimentichi di aggiungerli. Ci sono due modi per aggiungere questi campi alla tua codebase, che esamineremo.

Prerequisiti

  • Drupal 8.0.x installato.
  • Avere un modulo personalizzato (il nome del modulo usato in questo esempio è foobar).
  • Avere un tipo di contenuto personalizzato nel modulo (segui le istruzioni nella pagina principale. Il nome del tipo di contenuto sarà Car Brand).

Aggiunta di campi aggiuntivi al nostro tipo di contenuto

Ci sono due modi per fare questo passaggio. Puoi usare l’interfaccia utente per creare campi ed esportare la configurazione nei file, oppure puoi semplicemente scrivere i file manualmente. Mi piace usare la seconda opzione, per assicurarmi di sapere esattamente cosa deve fare e come deve apparire il campo. Esamineremo la codifica manuale dei campi nel tuo modulo personalizzato in questa pagina.

Codifica manuale dei campi nel tuo modulo

Come detto in precedenza, questo metodo richiede un po’ più di conoscenza e di sapere con precisione cosa vuoi che il campo faccia e come appaia. Ogni campo aggiunto deve avere due file YAML che contengono informazioni di configurazione. Sono denominati come segue: field.field.node.car_brand.field_brand_information.yml e field.storage.node.field_brand_information.yml.

Rimuovere il tipo di contenuto personalizzato

Se hai già abilitato il modulo foobar alla fine della pagina precedente, procedi e rimuovilo ora.

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

Questo file dirà a Drupal di creare il nostro campo.

# 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

Questo file dirà a Drupal di collegare il nostro campo al nostro tipo di contenuto.

# 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

Entrambi questi file devono essere aggiornati dalla pagina precedente per includere tutti i nuovi campi che aggiungi. Ho aggiunto due campi aggiuntivi chiamati «Additional_field_1» e «Additional_field_2», in modo che tu possa vedere come apparirà con più campi.

Nota: se non vuoi creare campi aggiuntivi, rimuovi le dipendenze e le informazioni per questi campi nel codice seguente.

# 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: {  }

Abilitare il tipo di contenuto personalizzato

Ora dovresti abilitare il modulo foobar. Se adesso vai alla pagina «Crea contenuto», vedrai che puoi creare un nuovo nodo del tipo di contenuto «Car Brand» e che includerà il nostro nuovo campo chiamato «Brand Information».

Esamineremo l’aggiunta di questi campi tramite interfaccia utente nella pagina successiva.