私はDrupalにかなり慣れていません。Wordpress開発から来ており、プラグインの一部をDrupal 8のモジュールに「変換」しようとしています。
新しいフィールドを追加しようとしているドキュメントに従っています。ノードに「price」と言います。私が見つけたすべてのドキュメントは、カスタムノードへのフィールドの追加に関連していますが、私の場合、それらのフィールドを通常の事前定義ノードに追加したいと思います。
頭に浮かぶ最初の質問は、YML構成ファイルまたはコードを使用してカスタムフィールドを作成できることです。
私はYMLでフィールドを作成し、それはdrupalによって認識されました。問題は、それらがノードに表示されないことです(手動でアクティブにする必要があります)。
私のモジュール/ config / install /に作成しました:
- core.entity_form_display.node.article.default
- core.entity_view_display.node.article.default
私は自分のフィールドを追加しますが、もちろん、モジュールをアクティブ化しようとすると、Drupalによってすでに定義されているため、モジュールは好きではありません。
これらのコアファイルを「拡張」する方法はありますか?YMLまたはコードでそれは可能ですか?
私はhttps://www.drupal.org/docs/8/api/entity-api/programming-custom-fields-into-your-content-typeをフォローしました。/ config / installにYMLファイルを作成しましたが、実際にフィールドが作成されました。問題は、カスタムノードタイプに関連していないため、ビューエンティティを「拡張」して表示エンティティを形成する方法がわからないことです。これらのファイル(core.entity_form_display.node.article.default core.entity_view_display.node.article.default)はすでにコアに存在しているため、事前に作成されたノードタイプにリンクされ、再定義できません。
このコメントに続いて、次のファイルを作成しました。
/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
また、FieldFormatterとFieldWidgetを作成しました。(適切かどうかはわかりません。)
私が見つけたのは、モジュールがフィールド価格を作成していることです。/ admin / structure / types / manage / article / displayにアクセスすると、価格が表示されますが、[ 無効]の下にあります。
私はとても近くにいるように感じますが、同時にとても迷っています。
そのフィールドをアクティブにするには何が欠けていますか?