Vì /data là bí danh đường dẫn cho một nút nên Drupal hiển thị nút đó thay vì hiển thị kết quả mà bộ điều khiển liên kết với đường dẫn đó trả về. Nếu bạn đặt bí danh đường dẫn nút thành /admin/config/people/accounts, Drupal sẽ hiển thị nút đó thay vì trang cài đặt tài khoản.
Nếu bạn muốn thay đổi mảng kết xuất được sử dụng cho một nút, bạn cần triển khai hook_ENTITY_TYPE_view()
. bạn có thể so sánh $entity->id()
với ID nút mà bạn muốn thêm dữ liệu vào mảng kết xuất của nó.
sử dụng \Drupal\Core\Entity\EntityInterface;
sử dụng \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Triển khai hook_ENTITY_TYPE_view().
*/
function mymodule_node_view(mảng &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
if ($entity->id() == 3) {
// Thay đổi $build.
}
}
Bạn cũng có thể tìm ID nút với bí danh đường dẫn của nó, chẳng hạn với mã tương tự như mã sau.
sử dụng \Drupal\Core\Entity\EntityInterface;
sử dụng \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Triển khai hook_ENTITY_TYPE_view().
*/
function mymodule_node_view(mảng &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
$path = \Drupal::service('path_alias.manager')->getPathByAlias('/data');
if (preg_match('/node\/(\d+)/', $path, $matches)) {
if ($entity->id() == $matches[1]) {
// Thay đổi $build.
}
}
}
Nhìn thấy Làm cách nào tôi có thể lấy ID nút từ bí danh đường dẫn? điều này cũng giải thích khi nào nên sử dụng path_alias.manager hoặc là đường dẫn.alias_manager dịch vụ.