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']可能返回别名或系统路径.