logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

Drupal 8 でのカスタムコンテンツタイプの作成

17/05/2020, by maria

このページはDrupal 8 モジュールの「デフォルトで有効化」設定のコピーです。これは廃止されたものとして扱う必要があります。

Drupal 8 に付属する新しい設定 API のおかげで、カスタムコンテンツタイプの作成は非常に簡単になりました。

前提条件

  • Drupal 8.0.x がインストールされていること
  • 独自のモジュールを持っていること(この例で使用されるモジュール名は foobar)

カスタムコンテンツタイプの作成

はじめにで述べたように、カスタムコンテンツタイプの作成は、必要なすべての設定を含むいくつかの YAML ファイルを作成することで行われます。この例では、Car Brand コンテンツタイプを作成します。このタイプには、デフォルトで2つのフィールド(本文とタイトル)が含まれます。

foobar/config/install/node.type.car_brand.yml

このファイルは、Drupal に新しいコンテンツタイプを作成する必要があることを通知します。

注: foobar モジュールに対する強制依存関係を追加していることに注意してください。この依存関係を追加しない場合、モジュールをアンインストールしても Drupal はコンテンツタイプを削除しません。サイト開発者がこのモジュールがもはや不要と判断した場合、このコンテンツタイプを利用可能にしておきたくありません。

# node.type.car_brand.yml
langcode: en
status: true
dependencies:
  enforced:
    module:
      - foobar # This is the name of the module we're using for this example
name: 'Car Brand'
type: car_brand
description: 'Content type that can be used to provide additional information on <em>Car Brands</em>'
help: ''
new_revision: false
preview_mode: 1
display_submitted: true

 

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

このファイルは、body フィールドをコンテンツタイプに追加します。

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

 

foobar/config/install/core.entity_view_display.node.car_brand.teaser.yml

このファイルは、カスタムコンテンツタイプのティーザーがどのように表示されるかを Drupal に通知します。

# core.entity_view_display.node.car_brand.teaser.yml
langcode: en
status: true
dependencies:
    config:
        - core.entity_view_mode.node.teaser
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.teaser
targetEntityType: node
bundle: car_brand
mode: teaser
content:
    body:
        label: hidden
        type: text_summary_or_trimmed
        weight: 101
        settings:
            trim_length: 600
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

 

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

このファイルは、カスタムタイプのコンテンツがデフォルトでどのように表示されるかを Drupal に通知します。

# core.entity_view_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
    config:
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
    body:
        label: hidden
        type: text_default
        weight: 101
        settings: {  }
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

 

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

このファイルは、カスタムコンテンツタイプの新しいノードを作成するときにフォームがどのように表示されるかを Drupal に通知します。

# core.entity_form_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
    config:
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
    body:
        label: hidden
        type: text_textarea_with_summary
        weight: 101
        settings: {  }
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

カスタムコンテンツタイプの有効化

設定ファイルが揃ったので、新しいカスタムコンテンツタイプを Drupal に通知する必要があります。これはモジュールを再インストールすることで行われます。モジュールがまだ有効になっていない場合は、単にモジュールを有効にします。モジュールが既に有効になっている場合は、モジュールをアンインストールして再度有効にします。
コンテンツの追加」ページに移動すると、「自動車ブランド(Car Brand)」コンテンツタイプの新しいノードを作成できることがわかります。