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

Режимы отображения: режимы просмотра и формы

20/05/2020, by maria

Режимы отображения

Существуют режимы отображения (доступные в admin/Structure/Display-Mode) для предоставления различных представлений объектов содержимого для просмотра или редактирования. Два типа режимов отображения - «режимы просмотра» и «режимы формы». Оба эти типа режимов отображения - режимы просмотра и режимы форм - являются примерами «объектов конфигурации». Вот пример экспортированного режима просмотра.

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

Основное свойство, на которое следует обратить внимание, это свойство targetEntityType. Каждый режим отображения (режим просмотра или режим формы) связан с одним и только одним типом объекта содержимого. По соглашению есть метки, которые используются для нескольких режимов отображения. Например, стандартный профиль Drupal Core использует слово «Full» в метках режимов просмотра для типов сущности контента узла, пользовательских блоков и комментариев.

Режимы просмотра и отображения

  • Администрируется в совокупности по адресу: /admin/structure/display-mode/view
  • Включено для каждого пакета в разделе «Пользовательские настройки отображения» по таким URL-адресам, как: /admin/structure/types/manage/page/display (где «page» - это пакет сущности узла)
  • Настраивается для режима просмотра для каждого пакета по URL-адресам, например: /admin/structure/types/manage/page/display/teaser (где «page» - это пакет сущности узла, а «teaser» - режим просмотра)

Режимы просмотра как концепция, предшествовавшие Drupal 8. Они присутствовали в Drupal 7. В Drupal 6 была концепция «режимов сборки». Существуют режимы просмотра, позволяющие инструментам создания сайтов Drupal, таким как поля Entity Reference, запрашивать определенную сущность определенным образом. Например, предположим, что «song» и «artist» - это каждый тип узла, и эта песня содержит справочное поле для artist. «Полное» отображение узла песни может потребоваться для отображения «тизера» отображения узла исполнителя. В этом примере «тизер» - это режим просмотра, используемый узлом исполнителя, а «полный» - это режим просмотра, используемый песней.

Обычно бывает, что если разработчик сайта хочет отобразить узел узла исполнителя в режиме просмотра тизера, тогда этот конструктор сайта настроит конфигурацию, специфичную для исполнителя и тизера. Это можно сделать, перейдя на вкладку «Управление отображением» на странице конфигурации набора сущностей. Примером этой страницы в стандартном профиле установки Drupal Core является /admin/structure/types/manage/article/display

На этой странице у разработчика сайта есть возможность включить настраиваемые параметры отображения полей для пакета (порядок полей и использование средства форматирования полей) для каждого режима просмотра. Не требуется, чтобы все режимы просмотра имели специальные настройки, сделанные для всех пакетов. В этом примере только режимы просмотра «RSS» и «Тизер» имеют свои собственные настройки. Все остальные режимы просмотра возвращаются к конфигурации «по умолчанию». Ассоциация между набором типов сущностей и режимом просмотра называется представлением представления. @see EntityViewDisplayInterface

d8-view-modes

Режимы форм и (форма) операций

  • Администрируется в совокупности по адресу: /admin/structure/display-mode/form
  • Включено для каждого пакета в URL-адресах, таких как: /admin/structure/types/manage/page/form-display (где «page» - это пакет сущности узла)
  • Настраивается для режима формы для пакета в URL-адресах, например: /admin/structure/types/manage/page/form-display/simple (где «page» - это пакет сущности узла, а «simple» - режим формы).

Как и режимы просмотра, режимы форм - это способ создания различных конфигураций полей с одним и тем же комплектом сущности контента. Режимы формы допускают несколько наборов упорядочений и настроек виджетов полей, так же как режимы просмотра допускают различные упорядочения и настройки форматеров полей.

 В Drupal 7 у нас есть поле и виджет поля на вкладке «Управление полями» любого типа контента. Теперь это разделено на две вкладки: «Управление полями» и «Управление отображением формы». Это дает нам больше гибкости в отношении того, как все будет выглядеть, когда кто-то смотрит на форму добавления / редактирования любых типов контента. Вкладка «Управление отображением» остается той же, что и в Drupal 7. Помимо типов контента, мы также можем управлять режимами просмотра для других типов сущностей, таких как пользователи, таксономия, комментарии и пользовательские блоки.

В дополнение к режимам форм, операции с формами позволяют определить, какие классы следует использовать для таких форм, как форма удаления узла. Класс, используемый для удаления узла, отличается от класса, используемого для редактирования узла. Операции определены в аннотациях объекта.

Вот пример, который отобразит 2 пользовательские операции с формой, а также режим формы «по умолчанию», в одну и ту же форму MyEntityForm. Убедитесь, что эта форма расширяет ContentEntityForm.

/**
 * @ContentEntityType(
 *   id = "myentity",
 *   handlers = {
 *     "form" = {
 *       "default" = "Drupal\myentity\Form\MyEntityForm",
 *       "add" = "Drupal\myentity\Form\MyEntityForm",
 *       "edit" = "Drupal\myentity\Form\MyEntityForm",
 *       "delete" = "Drupal\myentity\Form\MyEntityDeleteForm",
 *     },
 *   },
 * )
 */

Если вам нужно добавить или изменить доступные операции с формами в существующих сущностях, вы можете использовать hook_entity_type_build и hook_entity_type_alter.

В настоящее время должна быть явная настройка операции для используемого режима формы. В отличие от режимов просмотра (которые возвращаются к отображению представления по умолчанию, если отображение представления не существует для данного режима просмотра), режимы формы по умолчанию не будут использовать операцию «по умолчанию». Это можно считать ошибкой. См. # 2511720: Разрешить режимам формы использовать операцию по умолчанию, если операция формы не установлена явно.

Чтобы отобразить форму в режиме пользовательской формы, используйте _entity_form в своем маршруте. Например, чтобы отобразить пользовательскую форму «редактирования» MyEntity, используйте этот маршрут:

entity.myentity.edit_form:
 path: '/myentity/{myentity}/edit'
 defaults:
   _entity_form: myentity.edit
   _title: 'Edit MyEntity'
 requirements:
   _permission: 'edit myentity entities' 

Другой пример:

Обычная необходимость состоит в том, чтобы формы регистрации пользователей не отображали все пользовательские поля. Как только пользователь будет зарегистрирован, он получит доступ к форме редактирования профиля, в которой есть дополнительные поля. Это пример такой конфигурации:

  • Нажмите Добавить поле из /admin/config/people/account/fields
  • На следующем экране выберите тип поля, Список (Текст)
  • Дайте ему ярлык: «Список подписки»
  • Нажмите «Сохранить и продолжить»
  • Заполните список разрешенных значений, например:

                     1 | Новости
                     2 | Важные объявления
                     3 | Предложения, Скидки, Скидки
                     4 | Партнерские сообщения

  • Нажмите Сохранить
  • Сделайте это обязательным полем
  • Выберите все четыре элемента по умолчанию, нажмите Сохранить.
  • Далее нажмите вкладку «Управление отображением формы»
  • Внизу списка полей находится раздел с надписью «Пользовательские настройки отображения», разверните его.
  • В поле «Использовать пользовательские настройки отображения для следующих режимов формы» включите «Зарегистрироваться» и нажмите «Сохранить».
  • Теперь у вас будет вторая вкладка с названием «Регистрация».
  • Отключите поле «Список подписок», перетащив его в раздел «Отключено». Нажмите сохранить.
  • Перейдите на вкладку «Управление отображением», чтобы убедиться, что поле «Список подписок» включено.

Выйдите из сайта и посетите регистрационную форму. Поле списка подписки не будет видно.
После входа в систему поле Список подписок будет доступно в форме профиля обновления.