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?

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);

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]);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.