在 drupal_get_normal_path 中使用路径变量
Using a variable for path in drupal_get_normal_path
我是 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 并收到了我期望得到的节点信息,但是当我使用上面代码块中显示的变量时 returns存储在变量中的文本而不是查找节点源。
非常感谢您能提供的任何帮助!
认为这与这个问题非常相似here。
您做错的是假设该函数 returns 是一个节点 - 它不是,只是 returns 该节点的内部路径。因此,您仍然必须获取该 URL 引用的对象(节点),然后您实际上拥有节点 ID。
基本上,您可以使用(此代码比您拥有的代码更高效和紧凑 - 而且它有效!)实现它:
$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)。
希望对您有所帮助!
我是 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 并收到了我期望得到的节点信息,但是当我使用上面代码块中显示的变量时 returns存储在变量中的文本而不是查找节点源。
非常感谢您能提供的任何帮助!
认为这与这个问题非常相似here。
您做错的是假设该函数 returns 是一个节点 - 它不是,只是 returns 该节点的内部路径。因此,您仍然必须获取该 URL 引用的对象(节点),然后您实际上拥有节点 ID。
基本上,您可以使用(此代码比您拥有的代码更高效和紧凑 - 而且它有效!)实现它:
$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)。
希望对您有所帮助!