Как получить узел по псевдониму URL?

37

Я знаю, что могу загрузить узел по его названию с помощью node_load()функции. Можно ли загрузить узел по его псевдониму URL?

Луна
источник

Ответы:

56

Вы хотите исследовать menu_get_object и drupal_lookup_path .

Примерно так будет делать то, что вы хотите:

$alias = "some/path/to/a/page";
$path = drupal_lookup_path("source", $alias);
$node = menu_get_object("node", 1, $path);
mpdonadio
источник
Кроме того, чтобы динамически получить псевдоним URL, сделайте следующее: $ alias = $ _SERVER ['REQUEST_URI']; $ alias = substr ($ alias, 1); // убрать "/" из начала строки
Евгений Павлов
@EugenePavlov - $alias = drupal_get_path_alias();должно быть.
leymannx
0

Для тех, кто ищет способ сделать это в Drupal 8, вот соответствующий вопрос и ответ.

Как я могу получить nid узла из псевдонима страницы?

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
источник