правила drupal добавляют данные поля к указанному узлу без замены существующих данных

Мой вопрос касается: «добавление данных поля в указанный узел без замены существующих данных».

Например, у меня есть узел проекта, в котором члены команды ссылаются на проект. Каждый член команды имеет на своем узле местоположение, т. е. «Великобритания», «США», «Австралия».

На узле проекта у меня есть точно такие же поля. Мне нужно создать правило, чтобы при создании узла «член команды» его местоположение добавлялось в узел проекта без замены существующего содержимого.

Так, например, узел проекта с членом команды из Соединенного Королевства также будет иметь в своем поле местоположения «Великобритания». При добавлении члена команды из «США» в поле местоположения проекта будет указано «Великобритания» и «США». Когда добавляется член команды, который находится одновременно в Канаде и Франции, местоположением проекта становится Великобритания, США, Канада и Франция.

Спасибо!

Делать что-то вроде:

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

Просто не получится! Это заменит существующие значения. Как мне сделать так, чтобы он добавлял к существующим значениям. Спасибо!


person Jourkey    schedule 17.02.2010    source источник


Ответы (3)


Будет ли что-то подобное работать? По сути, мы захватываем текущее поле местоположения узлов (изменяем имена полей ниже, чтобы они подходили), загружаем эталонный узел, добавляем к нему данные о местоположении и сохраняем их. Я не добавлял код, чтобы проверить, существует ли уже это место, но это кое-что для другого дня. - Надеюсь, поможет.

#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");
person Matt    schedule 17.02.2010
comment
Джорки – Я видел галочку, это то, что ты искал? - person Matt; 18.02.2010

Важно ли на самом деле иметь ссылку на узел или просто отображать местоположение.

Если вас просто беспокоит отображение местоположения, я думаю, вы можете сделать это достаточно легко с помощью просмотреть.

Я полагаю, что есть опция обратной ссылки на узел, но она будет отображать только членов команды, а не местоположение.

Если важно иметь информацию о местоположении в узле проекта, вам придется использовать hook_nodeapi op = сохранить с кодом, похожим на Ответ Мэттса.

person Jeremy French    schedule 17.02.2010

Ты пробовал:

return array(
  array('value' => 'United Kingdom'),
  array('value' => 'United States'),
);
person ceejayoz    schedule 17.02.2010
comment
Это добавит Великобританию и США, но заменит существующие местоположения в Канаде и Франции. - person Jourkey; 17.02.2010