Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Создание пользовательского типа контента в Drupal 8

17/05/2020, by maria

Эта страница является копией конфигурации «Включить по умолчанию» в модуль Drupal 8. Это следует рассматривать как амортизацию.

Создание пользовательского типа контента стало довольно простым благодаря новому API конфигурации, который поставляется с Drupal 8.

Предпосылки

  • Drupal 8.0.x установлен
  • Иметь собственный модуль (имя модуля, используемого в этом примере, foobar)

Создание пользовательского типа контента

Как упоминалось во введении, создание пользовательского типа контента выполняется путем создания нескольких файлов YAML, которые содержат все необходимые настройки. В этом примере мы создадим тип контента Car Brand, который будет содержать два поля (по умолчанию): тело и заголовок.

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 о нашем новом пользовательском типе контента. Это делается путем переустановки модуля. Если ваш модуль еще не был включен, просто включите модуль. Если ваш модуль уже был включен, удалите модуль и включите его снова.
Если вы сейчас перейдете на страницу «Создание контента», вы увидите, что вы можете создать новый узел типа контента «Марка автомобиля».

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.