【问题标题】:Find nid from node's internal path in Drupal?在 Drupal 中从节点的内部路径中查找 nid?
【发布时间】:2011-06-01 20:04:48
【问题描述】:

我有这样的路径:

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

如何找到路径指向的节点的 nid?

编辑

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

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

    你可以使用 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');
    

    【讨论】:

    • 谢谢!我能够查询drupal db:SELECT src FROM url_alias WHERE dst = '$path';,然后我使用$node = menu_get_object('node', 1, $src);
    • 太棒了!我认为您可以使用 drupal_lookup_path($action='source', $path =''/news/2011/05/26/some-story-path');而不是自定义 sql 查询。
    【解决方案2】:

    在 Drupal 6 中...

    如果知道url别名,就可以检索内部系统路径:

    $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");
    

    【讨论】:

    • 对不起,我应该更清楚。我拥有的路径(news/2011/05/26/some-story-path)不是我所在的页面。它只是我拥有的一个字符串值,我需要检索有关它链接到的节点的信息。我相信你的方法只有在 /news/2011/05/26/some-story-path 的页面上才有效。
    • 没有问题。你也可以使用 drupal_lookup_path("source","news/2011/05/26/some-story-path");检索例如“节点/123”。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多