¿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?

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

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]);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.