Comment obtenir un noeud par son alias url?

37

Je sais que je peux charger un noeud par son titre avec la node_load()fonction. Est-il possible de charger un nœud par son alias d'URL?

Lune
la source

Réponses:

56

Vous voulez explorer menu_get_object et drupal_lookup_path .

Quelque chose comme ça ferait ce que vous voulez:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
la source
De plus, pour saisir dynamiquement l'url alias, procédez comme suit: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // pour supprimer "/" du début de la chaîne
Eugene Pavlov le
@EugenePavlov - $alias = drupal_get_path_alias();devrait être ça.
leymannx
0

Pour ceux qui cherchent comment faire cela dans Drupal 8, voici la question et la réponse correspondantes

Comment puis-je obtenir le nid d'un nœud à partir de l'alias de page?

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
la source