Drupal - İçerik Formu Teslimi otomatikleştirme

3 Cevap php

Ben bir katkıda modülünde bulunan bir içerik türü oluşturmak için varolan bir drupal formu doldurunuz programlama (php kullanarak) istiyorum.

Detaylar: modül SimpleFeed ve içerik türü besleyin edilir. Bunu gerçekleştirmek için modülün işlevleri çağırmak istiyorum. Ben ilgileniyorum yöntem Bunların ne emin değilim vid ve NİD gerektiren görünür hook_insert olduğunu.

Herhangi bir yardım takdir edilmektedir.

3 Cevap

Eğer biraz daha fazla bilgi (modüller?) sağlayabilir. genellikle, muhtemelen yerine programlama bir form aracılığıyla geçmek için çalışmakla içerik türü oluşturmak için modüller işlevlerini çağıran öneririm. Bu şekilde uygulama hakkında endişelenmenize gerek yok, ve modül çalışır eğer, o da sizin için komut dosyası çalışmaya edeceğiz güvenebilirsiniz :)

Tabii bu onların için modül kravat yok, bu yüzden onların fonksiyonlarında herhangi bir değişiklik seninkini etkileyebilir. (Onlar da kendi veritabanı yapısını güncellemek eğer ama sonra tekrar, bu riski)

ex.

// your file.php

function mymodule_do_stuff() {
    cck_create_field('something'); // as an example, i doubt this
                                   // is a real CCK function :)
}

edit: vid ve nid Kimlik düğüm vardır, vid revizyon kimliği ve nid birincil belirli bir düğüm anahtar. Bu gerçek bir düğüm, çünkü iki işlemi yapmak zorunda kalabilirsiniz.

  1. programatically create a node

    Tüm tam alanlara (masalar node ve node_revisions) için veritabanı başvurmak gerekir, ama bu size bir temel çalışma düğüm almalısınız:

    $node = (object) array(
        'nid' => '',            // empty nid will force a new node to be created
        'vid' => '',
        'type' => 'simplefeed'. // or whatever this node is actually called
        'title' => 'title of node',
        'uid' => 1,             // your user id
        'status' => 1,          // make it active
        'body' => 'actual content',
        'format' => 1,
                                // these next 3 fields are the simplefeed ones
        'url' => 'simplefeed url',
        'expires' => 'whatever value',
        'refresh' => 'ditto',
    );
    
    
    node_save($node);
    

    Şimdi i think otomatik olarak aramak gerekir bu noktada hook_insert() adlı SimpleFeed. değilse, o 2'ye gitmek. ama ben zaten dışarı çalışıp çalışmadığını görmek için kontrol ediyorum.

  2. call it yourself!

    simplefeed_insert($node);
    

edit2: drupal_execute() bazı doğrulama geri alabilirsiniz, ya da kötü bir fikir değil, ama siz değilseniz, bu şekilde form API ile uğraşmak zorunda değilsiniz onunla rahat. I node_save() zaten bütün kancaları çağırır eminim, bu yüzden gerçekten sadece bu yöntemle altında adımı 1 yapmak olmalıdır.

Drupal api drupal_execute() tam olarak bunu sağlar. Ben (bir performans neden olmadıkça) düğümü oluşturmak için doğrudan işlevleri çağıran önlemek öneririz. Drupal_execute () kullanarak diğer modüller tüm uygun kancalar denilen olacak ve kod çok daha büyük olasılıkla drupal gelecek sürümleri ile çalışmaya devam etmektir.

Bu yöntemi kullanarak klasik bir hata ilk gibi bir şey aradığını unutmayın

module_load_include('inc', 'node', 'node.pages')

Lütfen düğüm oluşturma formu için kod yükler hangi.

Doğrudan node_save arayarak genellikle önerilmiyor kabul edilir ve Drupal gelecekteki sürümlerinde kırık kodu ile bırakabilir.

Güzel bir örnektir this lullabot post de var

İşte drupal_execute iyi bir açıklamasını verir güzel bir makale bulunuyor. Programlama formları doldurmak için onun standart bir yol

http://drupal.org/node/293663

Bu sorunu çözmek gerekir