Drupal Views / Node Reference 获取父母关系

Posted

技术标签:

【中文标题】Drupal Views / Node Reference 获取父母关系【英文标题】:Drupal Views / Node Reference get parents relation 【发布时间】:2013-02-27 09:44:09 【问题描述】:

好的,对不起,这个标题很难描述。我的问题如下:我有内容类型“产品类别”(出于多种原因,不要使用分类法)和“产品”。产品使用Node Reference 引用到其类别。

我还有一个视图,它在类别页面上显示所有使用上下文过滤器 =>“来自 URL 的节点 ID”的所属产品。 我现在的问题是,当我点击一个产品时,我需要保持关系。上下文过滤器当然不再知道产品类别的 NID,因为当前 NID 是我的产品中的 NID。

作品:/category/xyz 不适用于:/category/xyz/myproduct(因为我需要“xyz”的nid,而不是“myproduct”)

有谁知道我如何告诉上下文过滤器获取父类别的 NID?

【问题讨论】:

【参考方案1】:

不确定我是否完全理解,但是当您使用上下文过滤器(例如来自 URL 的节点 ID)时,您可以选择要使用的参数。

在这个相对 URL /category/xyz/myproduct 的情况下,arg 1 指的是“category”,arg 2 指的是“xyz”

也许有一个 /category/* 和 /category/xyz/* 的视图设置,然后设置 URL 的哪些部分以不同的方式在上下文过滤器中使用。

这有帮助吗?

注意:arg 设置应该是上下文过滤器中“提供默认参数”的下拉设置。

【讨论】:

是的,你明白。但是 URL /category/xyz/myproduct 上的 arg() 只返回一个数组(0 => "node", 1 => "76") 例如 - 它是一个带有 URL 别名的普通节点,其中包含产品(视图)列表堵塞。所以我认为我的 URL 在我的产品页面上没有多大帮助? 您需要勾选“使用路径别名”复选框!抱歉应该提到这一点! 满怀希望地尝试过,但遗憾的是这根本不起作用,即使在类别页面上也是如此。我选择了“来自 URL 的原始值”,将“组件”设置为“2”并勾选了“使用路径别名”。听起来很有道理,什么都做。它在黑暗中摸索,我看不到过滤器接收到的内容(类别的名称?显然不是 nid!)。也许我必须找到一个使用自定义 php 代码的解决方案,获取父节点,加载节点,......不是很漂亮。 很难告诉你没有更多的信息,对不起,我不能再帮上忙了!【参考方案2】:

由于缺乏更好的解决方案……对于产品页面,我添加了另一个视图显示并进行了一些更改:

我添加了一个关系并为该类别选择了我的节点引用字段

我将上下文过滤器更改为自定义 PHP 并提供以下代码:

$n = node_load(arg(1));
return $n->field_product_product_category['und'][0]['nid'];

我没有将此答案标记为已接受,因为我认为这不是正确的方法。我加载了无论如何都会加载的节点,所以我认为我正在产生不必要的数据库调用以及与正确获取节点对象相关的所有内容。

也许有一天会有人对此有更好的答案。

【讨论】:

以上是关于Drupal Views / Node Reference 获取父母关系的主要内容,如果未能解决你的问题,请参考以下文章

ajax views

Drupal主题列表视图显示类似菜单

如何使用 Drupal 视图模块实现 node-VIEWNAME.tpl.php?

Drupal 7 Views 自定义视图模板字段

在 Drupal 7/Views 3 中创建相似节点列表

Drupal 7 Views 3 致命错误:无法访问受保护的属性 SelectQuery::$where