Drupal - 从视图中获取节点ID以自定义块中的链接

MrF*_*dge 6 drupal drupal-views drupal-6

如何在Drupal中构建一个块,它能够显示块当前所在的视图页面的节点ID?

我正在使用视图构建我的网站的一大块,但我需要能够在PHP模式下制作"智能"块,这将根据视图的显示内容生成动态内容.

如何找到当前显示视图的$ nid?

mpa*_*r17 14

以下是获取节点ID的更强大的方法:

<?php
    // Check that the current URL is for a specific node:
    if(arg(0) == 'node' && is_numeric(arg(1))) {
        return arg(1); // Return the NID
    }
    else { // Whatever it is we're looking at, it's not a node
      return NULL; // Return an invalid NID
    }
?>
Run Code Online (Sandbox Code Playgroud)

即使您的节点具有path和/或pathauto模块的自定义路径,此方法也可以工作.

仅供参考,如果您打开path模块,Drupal生成的默认URL在文档中称为"系统路径".如果你打开的path模块,你可以设置这是所谓的"别名"文档中的自定义路径.

因为我总是path打开模块,所以最初让我困惑的一件事是arg函数是否有可能返回别名的一部分而不是系统路径的一部分.

事实证明,该arg函数将始终返回一个系统路径,因为arg函数基于$_GET['q'] ...经过一些研究后,似乎$_GET['q']总会返回一个系统路径.

如果要从实际页面请求中获取路径,则需要使用$_REQUEST['q'].如果path模块已启用,则$_REQUEST['q']可能返回别名或系统路径.

  • 在相关的说明中,启用`path`模块将允许您访问名为`drupal_lookup_path`的函数,您可以使用该函数从别名中查找系统路径,反之亦然.有关更多信息,请参阅`drupal_lookup_path`文档:<http://api.drupal.org/api/function/drupal_lookup_path/6> (2认同)

小智 7

对于解决方案,尤其是涉及路径中间的视图参数的解决方案,department/%/list请参阅博客文章节点ID作为来自SEO友好URL路径的视图参数.