如何从视图行中获取节点 ID?
Posted
技术标签:
【中文标题】如何从视图行中获取节点 ID?【英文标题】:How do I get the node ID from a view row? 【发布时间】:2011-11-20 18:08:13 【问题描述】:我正在使用Drupal
。我有一个将表单加载到节点上的模块。在我的模块中,我使用了
if ( arg(0) == 'node' && is_numeric(arg(1)) ) $node = arg(1);
每个表单都打开了nid
。
现在我创建了一个显示完整节点的视图,但我的节点没有显示 nid
。
我尝试使用类似的东西
$node = node_load($rows->nid);
但它没有返回任何东西。
基本上我有一个显示大约 10 个节点的视图页面,我试图在视图中找到每个节点的 nid
。
【问题讨论】:
【参考方案1】:您可以使用视图自定义字段模块,它可以让您访问每行的 $data 对象。其中包括作为$data->nid
的nid。您还可以通过views-row.tpl.php
访问它。如果你有开发模块(这确实是必须的),你可以使用dsm(get_available_vars());
漂亮地打印该模板可用的所有变量,或者只使用dsm($data);
来漂亮地打印视图中的数据对象自定义字段(dsm()
使用 Krumo,非常方便)。
【讨论】:
【参考方案2】:if ( arg(0) == 'node' && is_numeric(arg(1)) ) $node = arg(1);
此代码仅在用户位于节点页面时才有效。路径是否有别名并不重要。 所以在 Views 中,它不起作用。
如果您正在构建一个显示节点的视图,您可以添加 node:id 字段以获取该行所属节点的节点 ID。我相信无需使用 Views Custom Filed(或 Views PHP 模块,如果您使用的是 Drupal 7)。
如果您尝试获取引用视图的节点 ID,请先通过节点引用字段添加与其他节点的关系。
【讨论】:
以上是关于如何从视图行中获取节点 ID?的主要内容,如果未能解决你的问题,请参考以下文章