كيف يمكنني إنشاء عقدة من وظيفة كرون في دروبال?

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

  •  01-07-2019
  •  | 
  •  

سؤال

في العرف وحدة دروبال 4.7 اخترقت معا عقدة موضوع مرت عليه إلى node_save($عقدة) لإنشاء العقد.هذا الإختراق يبدو لم تعد تعمل في دروبال 6.بينما أنا متأكد من أن هذا الإختراق يمكن أن تكون ثابتة أنا الغريب إذا كان هناك معيار الحل في إنشاء العقد دون شكل.في هذه الحالة يتم سحب البيانات من الأعلاف المخصصة على موقع آخر.

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

المحلول

أنا لا أعرف من معيار API لإنشاء عقدة عمليا.ولكن هذا هو ما كنت قد استقاها من بناء وحدة هذا ما كنت تحاول القيام به.

  1. تأكد من المجالات الهامة هي مجموعة:uid, اسم, اكتب, اللغة, العنوان, الجسم, فلتر (انظر node_add() و node_form())
  2. تمر من خلال العقدة node_object_prepare() لذلك وحدات أخرى يمكن أن تضيف إلى $عقدة الكائن.

نصائح أخرى

أفضل الممارسات طريقة صنع هذا يحدث هو استغلال drupal_execute.drupal_execute سيتم تشغيل معيار المصادقة الأساسية عقدة العمليات حتى الأشياء التي تتصرف بالطريقة النظام تتوقع.drupal_execute وقد المراوغات قليلا أقل سهولة من مجرد node_save ، ولكن ، في دروبال 6, يمكنك الاستفادة من drupal_execute في الموضة.


$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');

$node = new stdClass();
// I don't believe anything is required here, though 
// fields did seem to be required in D5

drupal_execute($form_id, $form_state, $node);

node_save() لا يزال يعمل بشكل جيد في دروبال 6;سوف تحتاج بضعة أجزاء معينة من البيانات في مكان العمل على انجاحه.

$node = new stdClass();
$node->type = 'story';
$node->title = 'This is a title';
$node->body = 'This is the body.';
$node->teaser = 'This is the teaser.';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;

node_save($node);

'وضع' و 'تعزيز' هل من السهل أن نغفل -- إذا كنت لا تضع تلك العقدة سوف تظل غير منشورة ، unpromoted و سترى فقط إذا ذهبت إلى محتوى إدارة الشاشة.

أكثر واحد يجيب اكتشفت أن استخدام على سبيل المثال من blogapi وحدة في دروبال الأساسية.حقيقة أنه هو في جوهر يعطيني المزيد من الثقة في أنه سيواصل العمل في الإصدارات المستقبلية.

هناك بعض الإجابات أعلاه, ولكن في مثال محدد من تحول تناولها تغذية بند في عقدة ، يمكنك أيضا أن تأخذ نهج باستخدام simplefeed وحدة (http://wwww.drupal.org/project/simplefeed).هذه الوحدة النمطية يستخدم simplepie محرك استيعاب يغذي يتحول العناصر الفردية من كل رضعة في العقد.وأنا أدرك أن هذا لا تعالج على وجه التحديد مسألة إنشاء العقد من كرون, ولكن قد يكون أسهل حل المشكلة بشكل عام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top