Nasıl ben drupal bir cron işi bir düğüm oluşturabilirim?

5 Cevap php

Drupal 4.7 için özel bir modül ben birlikte bir düğüm nesnesi kesmek ve düğümleri oluşturmak için ($ düğüm) node_save onu geçti. Bu hack Ben bu hack bir form olmadan düğümleri oluşturmak için standart bir çözüm var merak ediyorum sabit olabilir eminim iken artık. Drupal 6 çalışması için görünür. Bu durumda veri başka bir web sitesinde özel bir yem çekilir.

5 Cevap

Ben pragmatik bir düğüm oluşturmak için standart bir API bilmiyorum. Ama bu ben yapmak için çalışıyoruz ne yapar bir modül bina toplanan ettik budur.

  1. Emin olun önemli alanlar belirlenir: uid, adı, türü, dil, başlık, gövde, filtre (node_add() ve node_form() bakınız)
  2. node_object_prepare() yani diğer modüller $ düğüm nesne ekleyebilirsiniz aracılığıyla düğüm geçmektedir.

Bunun yapmanın en iyi uygulamalar yöntem drupal_execute kullanmaktır. şeyler sistem beklediği şekilde davranır böylece drupal_execute standart doğrulama ve temel düğüm operasyonları yürütecek. drupal_execute kendi tuhaflıklar vardır ve biraz daha az sezgisel basit bir node_save daha, ama, Drupal 6, aşağıdaki şekilde drupal_execute kullanabilir.


$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 () hala Drupal 6 çalışıyor; o iş yapmak için yerinde belirli veri parçaları bir çift gerekir.

$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);

'Durum' ve 'teşvik' göz ardı etmek kolay - bu set yoksa, düğüm yayınlanmamış ve unpromoted kalır ve içerik yönetim ekranına giderseniz sadece görürsünüz.

Ben keşfedilen bir more cevap drupal çekirdeğindeki blogapi modülünden the example kullanmak olmuştur. O çekirdek olduğunu aslında bana gelecekteki sürümlerinde çalışmaya devam edeceğini biraz daha güven verir.

Orada bazı iyi cevaplar yukarıda, ama bir düğüm içine yutulur besleme öğeyi dönüm belirli bir örnek, sen de SimpleFeed modülünü kullanarak yaklaşımı alabilir (http://wwww.drupal.org/project/simplefeed). Bu modül beslemeleri yemek için SimplePie motorunu kullanır ve düğümlerin her bir yem tek tek öğeleri döner. Bu özellikle cron'nun düğümler yaratma konusunu ele olmadığını fark, ama genel olarak senin sorunun daha kolay bir çözüm olabilir.