Jak zdobyć węzeł według jego aliasu URL?

37

Wiem, że mogę załadować węzeł według jego tytułu za pomocą node_load()funkcji. Czy można załadować węzeł według jego aliasu URL?

Księżyc
źródło

Odpowiedzi:

56

Chcesz zbadać menu_get_object i drupal_lookup_path .

Coś takiego zrobiłoby to, co chcesz:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
źródło
Ponadto, aby dynamicznie pobierać alias adresu URL, wykonaj następujące czynności: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // usunięcie „/” z początku łańcucha
Eugene Pavlov
@EugenePavlov - $alias = drupal_get_path_alias();powinno być.
leymannx
0

Dla kogoś, kto chce dowiedzieć się, jak to zrobić w Drupal 8, oto odpowiednie pytanie i odpowiedź

Jak mogę uzyskać identyfikator węzła z aliasu strony?

use \Drupal\Core\Url;

$alias = \Drupal::service('path.alias_manager')->getPathByAlias('/etapes-de-la-vie');
$params = Url::fromUri("internal:" . $alias)->getRouteParameters();
$entity_type = key($params);
$node = \Drupal::entityTypeManager()->getStorage($entity_type)->load($params[$entity_type]);
anoopjohn
źródło