Wie erhalte ich einen Knoten anhand seines URL-Alias?

37

Ich weiß, dass ich mit der node_load()Funktion einen Knoten anhand seines Titels laden kann . Ist es möglich, einen Knoten anhand seines URL-Alias ​​zu laden?

Mond
quelle

Antworten:

56

Sie möchten menu_get_object und drupal_lookup_path untersuchen .

So etwas würde tun, was Sie wollen:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
quelle
Um den URL-Alias ​​dynamisch zu erfassen, gehen Sie wie folgt vor: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // um "/" vom Stringanfang zu entfernen
Eugene Pavlov
@EugenePavlov - $alias = drupal_get_path_alias();sollte es sein.
Leymannx
0

Für jemanden, der dies in Drupal 8 tun möchte, ist hier die entsprechende Frage und Antwort

Wie kann ich die NID eines Knotens aus dem Seitenalias abrufen?

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
quelle