Ich bin ziemlich neu in Drupal, komme aus der Wordpress-Entwicklung und versuche, einige meiner Plugins in Module in Drupal 8 zu "übersetzen".
Ich folge der Dokumentation und versuche, ein neues Feld hinzuzufügen, z. B. "Preis" zu einem Knoten. Die gesamte Dokumentation, die ich gefunden habe, bezieht sich auf das Hinzufügen eines Felds zu einem benutzerdefinierten Knoten. In meinem Fall möchte ich diese Felder jedoch normalen vordefinierten Knoten hinzufügen.
Die erste Frage, die mir in den Sinn kommt, ist, ob ich das benutzerdefinierte Feld mit YML-Konfigurationsdateien oder Code erstellen kann, oder?
Ich habe das Feld mit YML erstellt und es wird von Drupal erkannt. Das Problem ist, dass sie nicht auf den Knoten erscheinen (ich muss sie manuell aktivieren).
Ich habe auf meinem Modul / config / install / erstellt:
- core.entity_form_display.node.article.default
- core.entity_view_display.node.article.default
Ich füge mein Feld hinzu, aber wenn ich versuche, das Modul zu aktivieren, gefällt es mir natürlich nicht, da sie bereits von Drupal definiert wurden.
Gibt es eine Möglichkeit, diese Kerndateien zu "erweitern"? ist das mit YML oder Code möglich?
Ich folgte https://www.drupal.org/docs/8/api/entity-api/programming-custom-fields-into-your-content-type . Ich habe die YML-Dateien unter / config / install erstellt, und tatsächlich wird das Feld erstellt. Das Problem ist, dass ich nicht weiß, wie Ansichts- und Formularanzeigeentitäten "erweitert" werden sollen, da sie nicht mit einem benutzerdefinierten Knotentyp verknüpft sind, da dies sonst der Fall sein sollte mit vorgefertigten Knotentypen verknüpft sein und ich kann diese Dateien nicht neu definieren (core.entity_form_display.node.article.default core.entity_view_display.node.article.default), da sie bereits auf dem Core vorhanden sind.
Nach diesem Kommentar habe ich folgende Dateien erstellt:
/config/install/field.field.node.article.field_price.yml
langcode: en
status: true
dependencies:
config:
- field.storage.node.field_price
- node.type.article
id: node.article.field_price
field_name: field_price
entity_type: node
bundle: article
label: Price
description: 'Premium Price'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: 1
max: 9999
prefix: ''
suffix: ''
field_type: integer
/config/install/field.storage.node.field_price.yml
langcode: en
status: true
dependencies:
module:
- node
id: node.field_price
field_name: field_price
entity_type: node
type: integer
settings:
unsigned: false
size: normal
module: core
locked: false
cardinality: 1
translatable: true
indexes: { }
persist_with_no_fields: false
custom_storage: false
Außerdem habe ich FieldFormatter und FieldWidget erstellt. (Ich bin nicht sicher, ob richtig.)
Was ich herausgefunden habe ist, dass das Modul das Feld Preis erstellt. Wenn ich zu / admin / structure / types / manage / article / display gehe, sehe ich dort meinen Preis, aber er ist unter Deaktiviert .
Ich fühle mich so nah, aber gleichzeitig so verloren.
Was fehlt mir, um dieses Feld aktiv zu machen?