Как получить узел по псевдониму 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);

Кроме того, чтобы динамически получить псевдоним 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]);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.