表示モード
表示モードは(admin/Structure/Display-Mode で利用可能)、コンテンツエンティティを表示または編集するためのさまざまな表現を提供します。表示モードには「ビューモード」と「フォームモード」の2つのタイプがあります。表示モードのこれら2つのタイプ(ビューモードとフォームモード)はどちらも「設定オブジェクト」の例です。以下はエクスポートされたビューモードの例です。
uuid: 15dc7aa9-13fd-4412-9c06-06d09f915d08
langcode: en
status: false
dependencies:
module:
- node
id: node.full
label: 'Full content'
targetEntityType: node
cache: true
参照: core.entity_view_mode.node.full.yml
Drupal 8 では、フィールドの言語はパブリック API では提供されなくなりました。代わりに、フィールドは言語対応のエンティティにアタッチされ、言語を「継承」します。
ここでの主な利点は次のとおりです:
Contentエンティティは、エンティティクラスに定義を提供することにより、すべてのフィールドを明示的に定義する必要があります。フィールド定義はTyped data APIに基づいています(エンティティがそれをどのように実装するかを参照)。
フィールド定義
エンティティタイプは、エンティティクラスの静的メソッドで基本フィールドを定義します。基本フィールドは、ノードのタイトルや作成/変更日時など、特定のエンティティタイプに常に存在する非設定フィールドです。エンティティマネージャーは、hook_entity_field_info() と hook_entity_field_info_alter() を呼び出すことにより、他のモジュールが提供するカスタムフィールドと非設定フィールドを補完します。これは、Field UI を通じて設定されたフィールドが追加される方法でもあります(これらのフックは API によるともはや存在しません)。
必要なさまざまな子ページの概要を説明するための単なるスタブ(プレースホルダー)の開始ページです。
とりあえず https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21entity.api.php/group/entity_api/8. を参照してください。
重要な改善
- Entity API は現在、Typed Data API を実装しています
この新しい Entity API の実装では、すべてが同じ API に基づくフィールドであるため、エンティティは予測可能で一貫性があります。
Drupal データモデルの理解
まず、Typed Data API 自体に踏み込む前に、Drupal のデータモデル(Entity API)が以前どのように認識されていたかを理解する必要があります。型付きデータ API はここから来ており、Entity API はそれが設計されたシステムの1つであるため、これは重要です。
エンティティは、アイテムのリストを持つフィールドなど、他のデータの断片で構成される複雑なデータです。フィールドアイテムもまた複雑で、テキスト値と入力形式などのより多くのデータの断片で構成されています。ただし、複雑さは、何かを文字列や整数などのプリミティブデータ型として記述できるところまで達します。
Drupal 7 の簡略化した例(Drupal 8 では言語キーの扱いが異なるため、言語キーのない例):
カスタムモジュールからコンテンツタイプをエクスポートするとき、このコンテンツタイプに属するフィールドも追加したい場合があります。フィールドを自動的に作成できるため、余分なフィールドを残さず、追加し忘れないことを保証しながら、複数のサイトで削除および再インストールできます。これらのフィールドをコードベースに追加するには2つの方法があり、それらを確認します。
カスタムモジュールからコンテンツタイプをエクスポートするとき、このコンテンツタイプに属するフィールドも追加したい場合があります。フィールドを自動的に作成できるため、余分なフィールドを残さず、追加し忘れないことを保証しながら、複数のサイトで削除および再インストールできます。これらのフィールドをコードベースに追加するには2つの方法があり、それらを確認します。
このページはDrupal 8 モジュールの「デフォルトで有効化」設定のコピーです。これは廃止されたものとして扱う必要があります。
Drupal 8 に付属する新しい設定 API のおかげで、カスタムコンテンツタイプの作成は非常に簡単になりました。
前提条件
- Drupal 8.0.x がインストールされていること
- 独自のモジュールを持っていること(この例で使用されるモジュール名は foobar)
カスタムコンテンツタイプの作成
はじめにで述べたように、カスタムコンテンツタイプの作成は、必要なすべての設定を含むいくつかの YAML ファイルを作成することで行われます。この例では、Car Brand コンテンツタイプを作成します。このタイプには、デフォルトで2つのフィールド(本文とタイトル)が含まれます。
対象読者
このドキュメントは、主にオブジェクト指向PHP、Drupal 6、またはDrupal 7でのプログラミング経験を持つ開発者を対象としており、Drupal 8の原則を学びたい方も対象です。
Drupal 8でコンテンツエンティティタイプを作成するドキュメントには、利用可能な全オプションのリストが含まれています。
Drupal 8でバンドルなしのコンテンツタイプを構築する
この例では、バンドルを持たないDrupal 8のコンテンツエンティティを作成します。
このエンティティはフィールドAPIを実装しないため、コード内に留まります。とはいえ、後でより複雑なデータをインポートすることになるため、Content Entitiesを構築するための有用な骨組みとなるでしょう。
最後に、OOPの概念が関係する部分では、対応するドキュメントを参照します。
背景
私たちのモジュールはadvertiser(広告主)と呼ばれます。
私たちのコンテンツエンティティタイプはadvertiserと呼ばれます。
このチートシートには、コンテンツエンティティでよく使われるメソッド、クラス、インターフェースの概要が含まれています。
![]()