Я новичок в кодировании drupal и до сих пор довольно новичок в PHP. Я добрался до определенного момента, и теперь я застрял! Документация помогла мне многое до этого момента, но я нахожусь изо всех сил, чтобы преодолеть это препятствие.
Мой код:
<?php
//Pulls the refering page url
$prev_page = $_SERVER['HTTP_REFERER'];
//breaks the referer into an associated array
$delimit = '/';
$splode = explode($delimit,$prev_page);
$chunked = array_slice($splode, 3, NULL);
//iterates through the array to output the address as a string
foreach($chunked as $k=>$v){
$path .= $v."/";
}
//find the node id from the alias
$node = drupal_get_normal_path($path);
echo $node;
?>
Таким образом, я получил адрес страницы ссылки как расширение (т.е. About-us/tim, а не http://www.google.com/about-us/tim), чтобы перейти в drupal_get_normal_path.
Я поместил фактический uri в drupal_get_normal_path и получил информацию о узле, которую я ожидал получить, но когда я использую переменную, как показано в вышеприведенном кодовом блоке, она возвращает текст, который хранится в переменной, а не поиск источника узла,
Любая помощь, которую я могу дать, очень ценится!
Думаю, что это довольно похоже на этот вопрос здесь.
То, что вы делаете неправильно, предполагает, что эта функция возвращает узел - это не так, просто возвращает внутренний путь к этому узлу. Таким образом, вы все равно должны получить объект (узел), на который ссылается этот URL-адрес, и тогда у вас действительно есть идентификатор узла.
В принципе, вы можете добиться этого, используя (этот код немного эффективнее и компактнее, чем у вас, плюс он работает!):
$url = $_SERVER['HTTP_REFERER'];
$path = preg_replace('/\//','',parse_url($url,PHP_URL_PATH),1);
$org_path = drupal_lookup_path("source", $path);
$node = menu_get_object("node", 1, $org_path);
$nid=$node->nid;
print $nid;
Если вы действительно хотите загрузить узел, вы просто выполните node_load ($ nid) после всего этого.
Надеюсь это поможет!