Deoarece /data este un alias de cale pentru un nod, Drupal arată acel nod în loc să arate ce returnează un controler asociat acelei căi. Dacă ar fi să setați un alias pentru calea nodului la /admin/config/people/accounts, Drupal ar afișa acel nod în loc de pagina de setare a conturilor.
Dacă doriți să schimbați matricea de randare utilizată pentru un nod, trebuie să implementați hook_ENTITY_TYPE_view()
. Puteți compara $entity->id()
cu ID-ul nodului la care doriți să adăugați date în matricea de randare.
utilizați \Drupal\Core\Entity\EntityInterface;
utilizați \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Implementează hook_ENTITY_TYPE_view().
*/
funcția mymodule_node_view(matrice &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
if ($entity->id() == 3) {
// Schimbați $build.
}
}
Puteți găsi, de asemenea, ID-ul nodului având în vedere alias-ul căii, de exemplu cu cod similar cu următorul.
utilizați \Drupal\Core\Entity\EntityInterface;
utilizați \Drupal\Core\Entity\Display\EntityViewDisplayInterface;
/**
* Implementează hook_ENTITY_TYPE_view().
*/
funcția mymodule_node_view(matrice &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
$cale = \Drupal::service('path_alias.manager')->getPathByAlias('/data');
if (preg_match('/node\/(\d+)/', $cale, $potriviri)) {
if ($entity->id() == $potrive[1]) {
// Schimbați $build.
}
}
}
Vedea Cum pot obține ID-ul nodului dintr-un alias de cale? care explică, de asemenea, când să utilizați path_alias.manager sau path.alias_manager serviciu.