Вот более-надежный способ получения идентификатора узла:
<?php
// Check that the current URL is for a specific node:
if(arg(0) == 'node' && is_numeric(arg(1))) {
return arg(1); // Return the NID
}
else { // Whatever it is we're looking at, it's not a node
return NULL; // Return an invalid NID
}
?>
Этот метод работает, даже если у вас есть собственный путь для вашего узла w с модулями path
и/или pathauto
.
Просто для справки, если вы сделать не поворота на path
модуле, URL по умолчанию, которые генерируют Drupal называется «системные путями» в документации. Если вы do включите модуль path
, вы можете установить настраиваемые пути, которые называются «псевдонимами» в документации.
Так как у меня всегда включен модуль path
, то первое, что меня смутило, было то, что функция arg
всегда могла возвращать часть псевдонима, а не часть пути к системе.
Как оказалось, функция arg
всегда будет возвращать системный путь, потому что the arg
function is based on $_GET['q']
... После небольшого исследования кажется, что $_GET['q']
всегда будет возвращать системный путь.
Если вы хотите получить путь от фактического запроса страницы, вам необходимо использовать $_REQUEST['q']
. Если модуль path
включен, $_REQUEST['q']
может возвращать либо псевдоним, либо системный путь.
Я немного смущен относительно того, что вы подразумеваете под «представлением» здесь - вы имеете в виду виды из модуля views? Если да, то почему у них только один идентификатор узла? (Большинство представлений представляют собой коллекции узлов, но, возможно, у вас есть специальный сценарий использования) –
Hiya - вы правы - я использую модуль views для поиска узлов, а затем корректно отформатируйте их. Вся информация об этих представлениях относится к одному узлу, хотя - мне просто нужно получить этот NID. – MrFidge