Поскольку /data является псевдонимом пути для узла, Drupal показывает этот узел вместо того, чтобы показывать, что возвращает контроллер, связанный с этим путем. Если бы вы установили псевдоним пути к узлу /admin/config/people/accounts, Drupal отобразил бы этот узел вместо страницы настройки учетных записей.
Если вы хотите изменить массив рендеринга, используемый для узла, вам необходимо реализовать крючок_ENTITY_TYPE_view()
. Вы можете сравнить $ сущность-> идентификатор ()
с идентификатором узла, к которому вы хотите добавить данные в его массив рендеринга.
используйте \Drupal\Core\Entity\EntityInterface;
используйте \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Реализует hook_ENTITY_TYPE_view().
*/
function mymodule_node_view (массив и $ build, EntityInterface $ Entity, EntityViewDisplayInterface $ display, $ view_mode) {
если ($entity->id() == 3) {
// Изменить $сборка.
}
}
Вы также можете найти идентификатор узла по его псевдониму пути, например, с помощью кода, подобного следующему.
используйте \Drupal\Core\Entity\EntityInterface;
используйте \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Реализует hook_ENTITY_TYPE_view().
*/
function mymodule_node_view (массив и $ build, EntityInterface $ Entity, EntityViewDisplayInterface $ display, $ view_mode) {
$path = \Drupal::service('path_alias.manager')->getPathByAlias('/data');
если (preg_match('/узел\/(\d+)/', $path, $matches)) {
если ($entity->id() == $matches[1]) {
// Изменить $сборка.
}
}
}
Видеть Как я могу получить идентификатор узла из псевдонима пути? который также объясняет, когда использовать path_alias.manager или path.alias_manager оказание услуг.