2011-06-01 76 views
2

我有这样一个路径:在Drupal中查找节点内部路径的nid?

/news/2011/05/26/some-story-path

如何找到一个节点的路径指向NID?

编辑

上面的路径只是一个字符串值,我有另一页上。我需要获取有关该路径链接到的节点的信息。

回答

3

你可以使用menu_get_object:

$node = menu_get_object(); 

http://api.drupal.org/api/drupal/includes--menu.inc/function/menu_get_object/6

编辑

我想你可以指定这样

menu_get_object($type = 'node', $position = 1, $path = '/news/2011/05/26/some-story-path'); 
+1

谢谢!我能够查询drupal数据库:'SELECT src FROM url_alias WHERE dst ='$ path';'然后我使用了'$ node = menu_get_object('node',1,$ src);' – 2011-06-01 20:46:49

+1

太好了!我认为你可以使用drupal_lookup_path($ action ='source',$ path =''/ news/2011/05/26/some-story-path');而不是定制的sql查询。 – Borgenk 2011-06-01 20:51:53

2

在Drupal的6 ...

如果你知道网址别名,你可以检索内部系统路径:

$nid = str_replace("node/","",drupal_lookup_path("source","my/drupal/path")); 

从PHP,观看时/编辑节点,也可以检索它像这样:

function get_current_nid() { 
    if (arg(0) == 'node' && is_numeric(arg(1)) { return arg(1); } 
    return null; 
} 

$nid = get_current_nid(); 
drupal_set_message("The current node id is: $nid"); 
+0

对不起,我本来应该更清晰的路径。我拥有的路径('news/2011/05/26/some-story-path')并不是我所处的页面。它只是一个字符串值,我需要检索它链接到的节点的信息。我相信你的方法只有在“/ news/2011/05/26/some-story-path”页面上才有效。 – 2011-06-01 20:29:30

+1

没有问题。你也可以使用drupal_lookup_path(“source”,“news/2011/05/26/some-story-path”);检索例如“节点/ 123”。 – 2011-06-02 13:24:27