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