Дополнительные типы блоков (EBT) — новый опыт конструктора страниц❗

Дополнительные типы блоков (EBT) — стилизованные, настраиваемые типы блоков: слайдшоу, вкладки, карточки, аккордеоны и многие другие. Встроенные настройки для фона, DOM Box, плагины Javascript.

Демо EBT модули Скачать EBT модули

❗Дополнительные типы параграфов (EPT) — новый опыт работы с параграфами

Дополнительные типы параграфов (EPT) — набор модулей, основанный на аналогичных параграфах.

Демо EPT модули Скачать EPT модули

Scroll

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

17/05/2020, by maria

Menu

Эта страница является копией конфигурации «Включить по умолчанию» в модуль 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.