Drupal中节点对表的引用

时间:2010-08-09 19:30:28

标签: drupal reference cck

我有和CCK的Drupal,
我有一个名为Article的内容类型。
本文有5个节点参考。
我正在使用CCK中的表字段,我正在尝试将其连接到
引用,所以每篇文章[持有一个表格字段]
会有一个包含5列的表格,每个产品对应一个 以及可根据用户需要改变的内容

但是我不确定该怎么做,我试过了 在参考文献中选择产品后,将产品添加到列中 通过jquery,它看起来很迟钝..有没有以前的解决方案呢?

图像清除 alt text

1 个答案:

答案 0 :(得分:3)

您可以使用View执行此操作,但在我们开始之前,如果您对节点进行一些更改,可能会更好。

  1. 不是为每个产品使用5个单独的节点引用字段,而是添加一个引用产品的节点引用字段。在该字段的配置中(在内容类型的管理字段选项卡上找到),在下将值数设置为 5 全局设置

  2. 然后,摆脱tableview CCK字段。您将不需要它,因为您要创建的视图将执行您要执行的操作。

  3. 现在,转到网站建设 - &gt; 观看次数 - &gt; 添加的。输入视图的名称;让我们说列出。您可以将描述标记更改为您想要的任何内容,但将视图类型设置为节点。< / p>

  4. 现在,设置视图。在字段下,添加要在产品表格中显示的字段;让我们说节点:标题节点:正文

  5. 过滤器下,为节点添加过滤器:输入,以便视图仅显示产品而非其他类型的节点。

  6. 基本设置下,将样式 Unformatted 更改为

    现在,您将拥有一个视图,可以显示表格中的所有可用产品。下一阶段是将该表限制为仅显示特定节点引用的产品。为此,您将创建一个参数。

  7. Arguments 下,添加 Node:ID 。现在,视图将仅显示ID与传递给视图的参数匹配的节点。

  8. 检查允许每个参数多个术语,这样您就可以一次查找多个节点。

  9. 由于您不会手动传递这些参数,因此您将使视图自动生成其查找的参数。选择提供 Action下的默认参数,如果参数不存在,则选择

  10. 有几个选项可用,但没有一个匹配您想要的选项:即所引用节点的节点ID。因此,选择 PHP代码,以便提供自定义参数。使用以下代码:

    $arguments = array();
    $node = node_load(arg(1));
    
    if ($node->field_product) {
      foreach ($node->field_product as $product) {
        if ($product['nid']) $arguments[] = $product['nid'];
      }
    }
    
    return implode(',', $arguments);
    

    这将查找网页的节点ID(arg(1)),检查其是否包含产品节点参考字段$node->field_product,将field_product更改为您字段的简称),然后构建一个包含所引用的每个节点的ID的参数。它以Views期望的格式返回参数列表:1,2,3

    现在视图已经完成:唯一要做的就是让视图出现在页面上。您可以创建显示,然后将该块添加到 Site building - &gt;下的区域。 。如果您转到引用产品的页面,该块将显示参考块表。

    如果您希望视图成为节点本身的一部分,请查看View Reference模块,该模块创建一个引用视图的CCK字段,就像节点参考引用节点一样。