我的问题是:“将字段数据添加到引用节点而不替换现有数据”。
例如,我有一个项目节点,团队成员引用该项目。每个团队成员在其节点上都有一个位置,即“英国”,“美国”,“澳大利亚”。
在项目节点上,我有完全相同的字段。我需要创建一个规则,以便在创建“团队成员”节点时,将其位置添加到项目节点而不替换现有内容。
因此,例如,来自英国的团队成员的项目节点也将位于其“位置”字段“英国”。当添加来自“美国”的团队成员时,项目的位置字段将具有“英国”和“美国”。当添加位于加拿大和法国的团队成员时,该项目的位置将变为英国,美国,加拿大和法国。
谢谢!
做类似的事情:
return array(
0 => array('value' => 'United Kingdom')
);
就行不通!它将取代现有的价值观。如何使它增加现有值。谢谢!
答案 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'),
);