Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在drupal\u get\u normal\u path中为path使用变量_Php_Drupal - Fatal编程技术网

Php 在drupal\u get\u normal\u path中为path使用变量

Php 在drupal\u get\u normal\u path中为path使用变量,php,drupal,Php,Drupal,我不熟悉drupal编码,对PHP还是相当陌生的。我已经到了一定的程度,现在被卡住了!到目前为止,文档对我帮助很大,但我发现自己正在努力克服这一障碍 我的代码: <?php //Pulls the refering page url $prev_page = $_SERVER['HTTP_REFERER']; //breaks the referer into an associated array $delimit = '/'; $splode = explode($delimit,

我不熟悉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而不是)传递到drupal\u get\u normal\u路径

我已经将实际uri放入drupal_get_normal_路径中,并收到了我期望得到的节点信息,但是当我使用上面代码块中所示的变量时,它返回存储在变量中的文本,而不是查找节点源


非常感谢您能给予的任何帮助

我想这和这个问题很相似

错误的做法是假设该函数返回一个节点——它不返回,只返回该节点的内部路径。因此,您仍然需要获取该URL引用的对象(节点),然后您实际拥有节点id

基本上,您可以使用以下方法实现它(此代码比您现有的代码更高效、更紧凑—而且它还可以工作!):

如果您真的想加载节点,那么您只需在所有这些之后执行node_load($nid)


希望这有帮助

谢谢大家!!这帮了大忙!
$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;