hook_entity_presave()
и hook_ENTITY_TYPE_presave()
не следует предполагать, что объект был отредактирован с использованием формы или страница была показана пользователям. Эти хуки также вызываются, когда сущность создается программным путем, например, с помощью следующего кода, который также можно использовать в крючок_cron()
выполнение.
$значения = [
'тип' => 'статья',
'title' => 'Заголовок статьи',
'ид' => 1,
'статус' => ИСТИНА,
];
$node = \Drupal::entityManager()->getStorage('node')->create($values);
$узел->сохранить();
Хук, вызываемый перед рендерингом сущности, крючок_entity_view()
(или же крючок_ENTITY_TYPE_view()
).
Используя один из этих хуков, модуль может добавить дополнительный массив рендеринга в $сборка
, например с $build['#attached']['library'][] = 'js/url-parameter.js';
.
В качестве примера кода $дисплей->получитькомпонент()
следует использовать для проверки того, что поле объекта настроено для отображения, поскольку пользователи-администраторы могут скрывать поля из /admin/structure/types/manage/article/display (для Статья Тип содержимого). Например, со следующими настройками я бы скрыл настраиваемое поле объекта, а Теги поле для Статья Тип содержимого.
Я бы также проверил значение $view_mode
передается этим хукам, поскольку это значение говорит, почему узел отображается. Например, когда модуль поиска индексирует узлы, $view_mode
равно 'search_index'
; когда узел добавляется в RSS-канал, $view_mode
равно 'rss'
. В этих случаях вы, вероятно, не захотите добавлять библиотеку.