drupal规则将字段数据添加到引用节点而不替换现有数据

时间:2010-02-17 03:23:44

标签: drupal drupal-rules

我的问题是:“将字段数据添加到引用节点而不替换现有数据”。

例如,我有一个项目节点,团队成员引用该项目。每个团队成员在其节点上都有一个位置,即“英国”,“美国”,“澳大利亚”。

在项目节点上,我有完全相同的字段。我需要创建一个规则,以便在创建“团队成员”节点时,将其位置添加到项目节点而不替换现有内容。

因此,例如,来自英国的团队成员的项目节点也将位于其“位置”字段“英国”。当添加来自“美国”的团队成员时,项目的位置字段将具有“英国”和“美国”。当添加位于加拿大和法国的团队成员时,该项目的位置将变为英国,美国,加拿大和法国。

谢谢!

做类似的事情:

return array(
  0 => array('value' => 'United Kingdom')
);

就行不通!它将取代现有的价值观。如何使它增加现有值。谢谢!

3 个答案:

答案 0 :(得分:1)

在节点上实际拥有引用或仅显示位置很重要。

如果您只是担心显示位置,那么我认为您可以执行此操作quite easily with a view

我相信有一个节点参考反向选项,但这只会显示团队成员而不是位置。

如果在项目节点中实际拥有位置信息很重要,那么您必须use hook_nodeapi op = save使用类似Matts' answer的代码。

答案 1 :(得分:0)

这样的事情会起作用吗?基本上我们捕获当前节点cck位置字段(更改下面的字段名称以适应),加载参考节点,并将位置数据添加到它,并将其保存。我没有添加代码来检查位置是否已经存在,但这是另一天的事情。 - 希望它有所帮助。

#some debug data below
#krumo ($node);
#print "<pre>". print_r($node,true) . "</pre>";

#$node is our current data set

# save the current $node nid into a variable
$nid = $node->nid; 
#get the reference nid 
$refnid = $node->field_refnid[0][nid];
#get the location
$currentlocation = $node->field_team_location[0][value];

# nowload the reference node
$refnode = node_load ($refnid);
# some debug data below
#krumo ($refnode);
#print "<pre>". print_r($refnode,true) . "</pre>";

$newlocation = array ("value"=>$currentlocation);
$refnode->field_loacations[] = $newlocation;
#now save the reference node
node_save ($refnode);

#drupal_goto ("node/$nid");

答案 2 :(得分:-1)

你试过了吗?

return array(
  array('value' => 'United Kingdom'),
  array('value' => 'United States'),
);