قواعد دروبال إضافة بيانات الحقل إلى العقدة المرجعية دون استبدال البيانات الموجودة

StackOverflow https://stackoverflow.com/questions/2278093

  •  21-09-2019
  •  | 
  •  

سؤال

سؤالي حول: "إضافة بيانات الحقل إلى العقدة المرجعية دون استبدال البيانات الموجودة".

على سبيل المثال ، لدي عقدة مشروع مع أعضاء الفريق يشيرون إلى المشروع. لدى كل عضو من أعضاء الفريق على عقدة موقع ، أي ، "المملكة المتحدة" ، "الولايات المتحدة" ، "أستراليا".

في عقدة المشروع لدي تلك الحقول نفسها بالضبط. أحتاج إلى إنشاء قاعدة بحيث عند إنشاء عقدة "عضو في الفريق" ، يتم إضافة موقعها إلى عقدة المشروع دون استبدال المحتوى الحالي.

لذلك على سبيل المثال ، فإن عقدة المشروع مع عضو في الفريق من المملكة المتحدة ستحصل عليها أيضًا في مجال موقعها ، "المملكة المتحدة". عند إضافة أحد أعضاء الفريق من "الولايات المتحدة" ، سيكون لحقل موقع المشروع "المملكة المتحدة" و "الولايات المتحدة". عندما يضاف أحد أعضاء الفريق الذي يكون موقعه في كندا وفرنسا ، يصبح موقع المشروع المملكة المتحدة والولايات المتحدة وكندا وفرنسا.

شكرًا!

القيام بشيء مثل:

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

فقط لن يعمل! سيحل محل القيم الحالية. كيف أقوم بعمله بحيث يضيف إلى القيم الموجودة. شكرًا!

هل كانت مفيدة؟

المحلول

هل يشبه هذا العمل؟ في الأساس ، نلتقط حقل موقع 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");

نصائح أخرى

هل من المهم أن يكون لديك بالفعل مرجع على العقدة أو فقط لعرض الموقع.

إذا كنت قلقًا فقط من عرض الموقع ، فأعتقد أنه يمكنك القيام بذلك بسهولة تامة مع عرض.

هناك خيار عكسي مرجع العقدة على ما أعتقد ، ولكن هذا سيعرض فقط أعضاء الفريق وليس الموقع.

إذا كان من المهم بالفعل الحصول على معلومات الموقع في عقدة المشروع ، فسيتعين عليك ذلك استخدم hook_nodeapi op = حفظ مع رمز مماثل مع إجابة ماتتس.

هل جربت:

return array(
  array('value' => 'United Kingdom'),
  array('value' => 'United States'),
);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top