0

好的,对于那个标题很抱歉,很难形容。我的问题如下:我有内容类型“产品类别”(出于多种原因不使用分类标准)和“产品”。产品使用Node Reference参考其分类。Drupal Views/Node Reference获取父母关系

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

作品:/分类/ XYZ
作品不:/分类/ XYZ/myProduct的(因为我需要的 “XYZ” 的NID,而不是 “myProduct的”)

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

回答

0

不知道我是否完全理解,但是当您使用上下文筛选器(如URL中的节点标识)时,可以选择要使用的参数。

在这种相对URL /类别/ XYZ/myProduct的的情况下,arg 1指的是 '类别' 和Arg 2指的是 'XYZ'

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

这有帮助吗?

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

+0

是的,你明白。但是,URL/category/xyz/myproduct上的arg()只返回一个数组(例如0 =>“node”,1 =>“76”) - 这是一个正常节点,其中包含产品块。所以我认为我的网址对我的产品页面无太大帮助? – 2013-02-27 13:10:45

+0

您需要勾选“使用路径别名”复选框!抱歉应该提到那个! – 2013-02-27 15:47:18

+0

尝试过它充满希望,但遗憾的是,即使在分类页面上,这也不起作用。我选择了“URL的原始值”,将“component”设置为“2”并勾选“使用路径别名”。听起来有意思,什么都不做。它在黑暗中摸索着,我看不出过滤器收到了什么(类别的名字?显然不是NID!)。也许我必须找到自定义PHP代码的解决方案,获取父级,加载节点......不是很漂亮。 – 2013-03-01 09:18:20

0

由于缺乏一个更好的解决方案......该产品页面,我增加了一个图显示,改变了一点:

  • 我加了关系,并选择我的节点参考字段类别
  • 我改变了我的上下文过滤器定制的PHP和提供下面的代码:

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

我不庆祝这个答案被接受,因为我不认为这是正确的方式。我加载无论如何加载的节点,所以我想我会产生一个不必要的数据库调用和所有与正确获取节点对象有关的东西。

也许某天某人有更好的答案。