logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Programmierung benutzerdefinierter Felder in Ihren Inhaltstyp

18/06/2025, by Ivan

Manchmal, wenn Sie einen Inhaltstyp aus einem benutzerdefinierten Modul bereitstellen, können Sie auch Felder hinzufügen, die zu diesem Inhaltstyp gehören. Die Möglichkeit, Felder automatisch zu erstellen, ermöglicht es Ihnen, die Installation auf mehreren Seiten zu deinstallieren und neu zu installieren, ohne dass unerwünschte Felder zurückbleiben, und stellt sicher, dass Sie nicht vergessen, sie hinzuzufügen. Es gibt zwei Methoden, diese Felder in Ihren Code einzubringen, die wir hier behandeln werden.

Voraussetzungen

  • Drupal 8.0.x ist installiert.
  • Sie haben ein benutzerdefiniertes Modul (der Modulname in diesem Beispiel ist foobar).
  • Sie haben einen benutzerdefinierten Inhaltstyp im Modul (bitte folgen Sie den Anweisungen auf der übergeordneten Seite. Der Inhaltstyp heißt Car Brand).

Zusätzliche Felder zu unserem Inhaltstyp hinzufügen

Es gibt zwei Wege, diesen Schritt durchzuführen. Sie können die Benutzeroberfläche verwenden, um Felder zu erstellen und die Konfiguration zu exportieren, oder Sie schreiben die Dateien direkt selbst. Ich bevorzuge die erste Methode, um sicherzugehen, dass Sie nichts Wichtiges übersehen, aber die exportierten Felder beginnen mit „field_“ und nicht mit „foobar_car_brand_“, um sie mit unserem Inhaltstyp zu verknüpfen. Auf dieser Seite betrachten wir das manuelle Kodieren von Feldern in Ihrem benutzerdefinierten Modul.

Manuelles Kodieren von Feldern in Ihrem Modul

Wie bereits erwähnt, erfordert diese Methode etwas mehr Wissen und genaue Kenntnis darüber, was das Feld tun und wie es aussehen soll. Jedes hinzugefügte Feld benötigt zwei YAML-Dateien, die die Konfigurationsinformationen enthalten. Diese heißen: field.field.node.car_brand.field_brand_information.yml und field.storage.node.field_brand_information.yml.

Benutzerdefinierten Inhaltstyp deinstallieren

Falls Sie das Modul foobar bereits aktiviert haben (am Ende der vorherigen Seite), deinstallieren Sie es jetzt.

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

Diese Datei teilt Drupal mit, dass es unser Feld erstellen soll.

# 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

Diese Datei teilt Drupal mit, dass unser Feld an den Inhaltstyp angehängt werden soll.

# 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

Beide Dateien müssen von der vorherigen Seite aktualisiert werden, um alle neuen Felder einzuschließen, die Sie hinzufügen. Ich habe zwei weitere Felder namens „Additional_field_1“ und „Additional_field_2“ hinzugefügt, damit Sie sehen, wie es mit mehreren Feldern aussieht.

Hinweis: Wenn Sie keine zusätzlichen Felder erstellen möchten, entfernen Sie die Abhängigkeiten und Informationen zu diesen Feldern im folgenden Code.

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

Benutzerdefinierten Inhaltstyp aktivieren

Jetzt sollten Sie das Modul foobar aktivieren. Wenn Sie zur Seite "Inhalt erstellen" gehen, sehen Sie, dass Sie einen neuen Knoten des Inhaltstyps „Car Brand“ erstellen können, der unser neues Feld „Brand Information“ enthält.

Wir betrachten das Hinzufügen dieser Felder über die Benutzeroberfläche auf der nächsten Seite.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.