我有 Drupal 和 CCK,
我有一个名为文章的内容类型。
本文有 5 个节点引用。
我正在使用 CCK 中的表字段,并尝试将其连接到
引用文献,因此每篇文章[包含一个表字段]
将有一个包含 5 列的表格,每个产品一列
以及可以根据用户想要改变的内容
但是我不太确定该怎么做,我尝试过
在引用中选择产品后将其添加到列
通过jquery,它看起来很慢..有没有以前的解决方案?
图像要清晰
最佳答案
您可以使用View来做到这一点,但在我们开始之前,最好对节点进行一些更改。
不要为每个产品使用 5 个单独的节点引用字段,而是添加一个引用产品的节点引用字段。在字段配置中(位于内容类型的管理字段选项卡上),将下的值数量设置为5全局设置。
然后,删除 tableview CCK 字段。您不需要它,因为您要创建的 View 将执行您想要执行的操作。
现在,转到网站 build -> View --> 添加。输入 View 的名称;假设列出。您可以将描述和标签更改为您想要的任何内容,但将 View 类型设置为节点。
现在,设置 View 。在字段下,添加您想要在产品表中显示的字段;假设节点:标题和节点:正文。
在过滤器下,为节点:类型添加过滤器,以便 View 仅显示产品,而不显示其他类型的节点。
在基本设置下,将样式从无格式更改为表格。
您现在将拥有一个 View ,该 View 将显示表格中的所有可用产品。下一阶段是限制该表仅显示特定节点引用的产品。为此,您将创建一个参数。
在参数下,添加节点:ID。现在, View 将仅显示 ID 与传递给 View 的参数匹配的节点。
选中每个参数允许多个术语,这样您就可以一次查找多个节点。
由于您不会手动传递这些参数,因此 View 将自动生成其查找的参数。在参数不存在时采取的操作下选择提供默认参数。
有几个可用选项,但没有一个与您想要的选项匹配:即所引用节点的节点 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
。
现在 View 已完成:唯一要做的就是使 View 显示在页面上。您可以创建一个 block 显示,然后将该 block 添加到网站 build -> block 下的区域。如果您转到引用产品的页面,该 block 将与引用 block 表一起出现。
如果您希望 View 成为节点本身的一部分,请查看 View Reference模块,它创建一个引用 View 的 CCK 字段,就像节点引用引用节点一样。
关于drupal - Drupal 中表的节点引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443484/