web-gelistirme-sc.com

Node_save kullanarak düğümler nasıl oluşturulur?

Mevcut html sitemi Drupal'a geçirmeye çalışıyorum. Taşınmam gereken 80.000'den fazla sayfam var, bu yüzden 50 yıl boyunca bir bilgisayarın önünde oturmak yerine bir modül oluşturacağımı düşündüm. Her dizinden html ayıklayan bir komut dosyası oluşturmak mümkün ve şimdi bir düğüm oluşturmak için gereken bir yol bloğuna var. node_save() kullanarak yeni bir düğüm oluşturmaya çalışıyorum, ancak node_save yürütüldüğünde, denediğim her şeyle PDOException hatası alıyorum. İçeri giriyorum $node, ki bu daha sonra bir nesneye dökülen bir dizidir.

PDOException: field_sql_storage_field_storage_write () içinde (/srv/www/htdocs/modules/field/modules/field_sql_storage/field_sql_storage.module satır 424).

Şu anda düğümü şu şekilde oluşturuyoruz, ancak bir hata üretiyor:

$node= array(
    'uid' => $user->uid,
    'name' => $user->name,
    'type' => 'page',
    'language' => LANGUAGE_NONE,
    'title' => $html['title'],
    'status' => 1,
    'promote' => 0,
    'sticky' => 0,
    'created' => (int)REQUEST_TIME,
    'revision' => 0,
    'comment' => '1',
    'menu' => array(
        'enabled' => 0,
        'mlid' => 0,
        'module' => 'menu',
        'hidden' => 0,
        'has_children' => 0,
        'customized' => 0,
        'options' => array(),
        'expanded' => 0,
        'parent_depth_limit' => 8,
        'link_title' => '',
        'description' => '',
        'parent' => 'main-menu:0',
        'weight' => '0',
        'plid' => '0',
        'menu_name' => 'main-menu',
    ),
    'path' => array(
        'alias' => '',
        'pid' => null,
        'source' => null,
        'language' => LANGUAGE_NONE,
        'pathauto' => 1,
    ),
    'nid' => null,
    'vid' => null,
    'changed' => '',
    'additional_settings__active_tab' => 'edit-menu',
    'log' => '',
    'date' => '',
    'submit' => 'Save',
    'preview' => 'Preview',
    'private' => 0,
    'op' => 'Save',
    'body' => array(LANGUAGE_NONE => array(
        array(
            'value' => $html['html'],
            'summary' => $link,
            'format' => 'full_html',
        ),
    )),
        'validated' => true,
);

node_save((object)$node);

// Small hack to link revisions to our test user.
db_update('node_revision')
    ->fields(array('uid' => $node->uid))
    ->condition('vid', $node->vid)
    ->execute();
9
samwell

Bence Programlı olarak Drupal 7 içinde düğümler, yorumlar ve sınıflandırmalar nasıl oluşturulur.

$node = new stdClass(); // We create a new node object
$node->type = "page"; // Or any other content type you want
$node->title = "Your title goes jere";
$node->language = LANGUAGE_NONE; // Or any language code if Locale module is enabled. More on this below *
$node->path = array('alias' => 'your node path'); // Setting a node path
node_object_prepare($node); // Set some default values.
$node->uid = 1; // Or any id you wish

// Let's add standard body field
$node->body[$node->language][0]['value'] = 'This is a body text';
$node->body[$node->language][0]['summary'] = 'Here goes a summary';
$node->body[$node->language][0]['format'] = 'filtered_html'; // If field has a format, you need to define it. Here we define a default filtered_html format for a body field

$node = node_submit($node); // Prepare node for a submit
node_save($node); // After this call we'll get a nid
6
penguin89

Bir diziyi stdClass nesnesine dönüştürmek yerine, yeni bir stdClass() nesnesi oluşturmayı ve sonra nesneyi yeni bir oluşturmak üzere hazırlamak için node_object_prepare () kullanmayı deneyebilirsiniz. düğüm ve daha sonra el ile uid, ad, başlık, dil, gövde vb. değerlerini değiştirerek. Ayrıca, yeni düğümü veritabanına kaydetmeden önce node_submit () kullandığınızdan emin olun.

Örnek: http://drupal.org/node/1173136

6
dwieeb

Sorununuz, nid = null ve vid = null ile yeni bir düğüm oluşturmaya çalışmanızdır; bu, yinelenen girişler sorunu yaratan dizin numarası 0 ile yeni kayıtlar eklemeye çalışırken düğüm tablosunu bozar ve kafa karıştırıcı drupal çekirdek. Bu arada - drupal çekirdek node_save sorunu görmeyecek gibi eylemler için savunmasızdır ve bu kaydı db'ye eklemeye çalışın - sql hatasına neden olan ve bir PDO istisnası atanan

1
Daniofantasy