Php 在drupal\u get\u normal\u path中为path使用变量
我不熟悉drupal编码,对PHP还是相当陌生的。我已经到了一定的程度,现在被卡住了!到目前为止,文档对我帮助很大,但我发现自己正在努力克服这一障碍 我的代码: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,
<?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;