¿Cómo obtener un nodo por su alias de URL?

37

Sé que puedo cargar un nodo por su título con la node_load()función. ¿Es posible cargar un nodo por su alias de URL?

Luna
fuente

Respuestas:

56

Desea investigar menu_get_object y drupal_lookup_path .

Algo como esto haría lo que quieras:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
fuente
Además, para tomar dinámicamente el alias de url, haga lo siguiente: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // para eliminar "/" del comienzo de la cadena
Eugene Pavlov
@EugenePavlov: $alias = drupal_get_path_alias();debería serlo.
leymannx 05 de
0

Para alguien que busca encontrar cómo hacer esto en Drupal 8 aquí está la pregunta y la respuesta correspondiente

¿Cómo puedo obtener el nid de un nodo del alias de 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
fuente