Поля, которые импортируются через конфигурацию, по умолчанию отключены. Как их включить?

В пользовательском модуле для Drupal 8 я могу добавить новый тип контента со всеми его полями, но все поля по умолчанию отключены. Как мне включить их во время установки моего модуля?

Редактировать Для ясности, поля модуля не включены по умолчанию в разделе "Управление отображением формы". Как включить (или отключить) поля, используя что-то вроде хук-установки?

Редактировать 2 Наряду с включением полей по умолчанию во вновь созданном типе контента, установка этого модуля также обновляет поля в существующем типе контента (Статья), и эти поля также отключены.

Редактировать 3 отключено означает, что они отображаются как отключенные на дисплее формы для типа контента, и пользователи не могут видеть поля при добавлении контента.

Должен быть код, который я могу запустить через hook_install, который включил поля для типа контента?

3 ответа

Решение

Я предполагаю, что под словом "отключено" вы подразумеваете, что поля не отображаются при создании экземпляра вашего типа контента.

Лично я использовал пользовательский интерфейс, чтобы настроить отображение каждого из моих полей на странице "Управление отображением", предусмотренной для каждого типа контента. Я перетаскиваю поля, которые хочу включить, из отключенного раздела, как обычно.

Когда я доволен тем, как расположены поля, я использую блестящие встроенные функции экспорта (думаю, функции в Drupal 7, но гораздо лучше), чтобы сгенерировать файлы конфигурации.yml для моего типа контента.

Этот процесс блестяще описан в этой статье на сайте Drupal. В этом случае, так как это просто конфигурация, для каких полей мы хотим отобразить, это должно быть так же просто, как экспорт конфигурации "Entity View Display" для типа контента в файл.yml. (обратите внимание, что вам нужно правильно называть свои файлы yml, это объясняется в статье (и я думаю, что модуль экспорта в любом случае предоставляет автоматически сгенерированное имя)).

Вот как выглядит экспорт для одного из моих типов контента: Экспорт представления объекта

После того, как я сгенерировал файлы конфигурации, которые я хочу применить к Drupal, когда модуль включен, это действительно так же просто, как создать две директории в корневой директории модуля:

"./Config/install"

и поместив файлы конфигурации в каталог установки.

Теперь, когда модуль установлен впервые, Drupal будет применять конфигурацию, предоставленную файлами в каталоге /config/install.

Этот процесс разработан здесь: https://www.drupal.org/docs/8/creating-custom-modules/include-default-configuration-in-your-drupal-8-module

При экспорте поля вы также должны экспортировать:

  • "Полевая декларация" field.field.[entity_type].[bundle].[field_name].yml файл. Не забудьте добавить объявление о повторном использовании полей
  • "Полевое хранение" field.storage.[entity_type].[field_name].yml файл
  • "Отображение формы", где вы изменили конфигурацию поля. core.entity_form_display.[entity_type].[budle].default.yml
  • "Управление дисплеем", где вы изменили конфигурацию поля. core.entity_view_display.[entity_type].[budle].[view_mode_id].yml файлы (если у вас есть Default, Teaser и т. д.)
  • "Сущность", если сущность new. [entity_type].[type|paragraph_type|vocabulary].[bundle].yml файл

    Я рекомендую вам использоватьdrush cex/cimmsgstr "команды для импорта и экспорта конфигурации.

Я не знаю слишком много о Drupal 8, но когда я пытаюсь создать пользовательский тип контента, чтобы использовать эту статью.

https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8

Затем, когда я включаю наш пользовательский модуль, тип контента успешно создается, и поля типа контента также включены.

Также я пытаюсь создать узел в этом типе контента, то узел успешно создан.

Поэтому, пожалуйста, проверьте эту статью.

Это может быть полезно для вас.

Спасибо,

Другие вопросы по тегам