Como obter um nó por seu alias de URL?

37

Eu sei que posso carregar um nó por seu título com a node_load()função É possível carregar um nó pelo alias de URL?

Lua
fonte

Respostas:

56

Você deseja investigar menu_get_object e drupal_lookup_path .

Algo assim faria o que você deseja:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
fonte
Além disso, para pegar dinamicamente o alias de URL, faça o seguinte: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // para remover "/" do início da string #
Eugene Pavlov
@EugenePavlov - $alias = drupal_get_path_alias();deveria ser isso.
Leymannx
0

Para alguém que procura descobrir como fazer isso no Drupal 8, aqui está a pergunta e resposta correspondentes

Como posso obter o nid de um nó no alias da página?

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
fonte