নোড_সেভ ব্যবহার করে নোডগুলি কীভাবে তৈরি করবেন?


9

আমি আমার বর্তমান এইচটিএমএল সাইটকে দ্রুপালে স্থানান্তরিত করার চেষ্টা করছি। আমার ৮০,০০০ এরও বেশি পৃষ্ঠাগুলি আমার মাইগ্রেট করতে হবে তাই আমি ভাবলাম পরিবর্তে 50 বছরের কম্পিউটারের সামনে বসে আমি একটি মডিউল তৈরি করব। আমি এমন একটি স্ক্রিপ্ট তৈরি করতে সক্ষম হয়েছি যা প্রতিটি ডিরেক্টরি থেকে এইচটিএমএল বের করে এবং এখন আমি একটি রোড ব্লকে গিয়েছিলাম যেখানে আমার নোড তৈরি করতে হবে। আমি ব্যবহার করে একটি নতুন নোড তৈরি করার চেষ্টা করছি node_save(), কিন্তু নোড_সেভ কার্যকর করা হলে, আমি PDOExceptionযা চেষ্টা করি তার সাথে ত্রুটি পাই। আমি পাস করছি $node, যা একটি অ্যারে যা পরে একটি বস্তুতে কাস্ট করা হয়।

PDOException: ফিল্ড_সক্লাল_স্টোরেজ_ফিল্ড_ স্টোরেজ_উইরাটে () (/ এসআরভি /www/htdocs/modules/field/modules/field_sql_stores/field_sql_storage.module এর লাইন 424)।

আমরা বর্তমানে নোডটি এইভাবে তৈরি করছি তবে এটি একটি ত্রুটি তৈরি করে:

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

উত্তর:


6

আমি মনে করি যে আপনি কীভাবে প্রোগ্রামালিকভাবে ড্রুপাল 7 এ নোড, মন্তব্য এবং কর বিভাগগুলি তৈরি করবেন তা পড়া উচিত ।

$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

কোনও stdClassবস্তুতে অ্যারে নিক্ষেপ করার পরিবর্তে আপনি একটি নতুন stdClass()বস্তু তৈরি করার চেষ্টা করতে পারেন এবং তারপরে নোড_বজেক্ট_প্রিয়ার () ব্যবহার করে একটি নতুন নোড তৈরি করার জন্য প্রস্তুত করতে পারেন এবং অবশেষে নিজেই uid, নাম, শিরোনাম, ভাষা, শরীর ইত্যাদির মান পরিবর্তন করতে পারেন এছাড়াও, ডাটাবেসে নতুন নোড সংরক্ষণ করার আগে নোড_সোবমিট () ব্যবহারের বিষয়টি নিশ্চিত হন ।

উদাহরণ: http://drupal.org/node/1173136


1

আপনার সমস্যাটি হ'ল, আপনি nid = নাল এবং vid = নাল দিয়ে একটি নতুন নোড তৈরি করার চেষ্টা করছেন যা নড টেবিলটি স্ক্রু করছে যেহেতু আপনি সূচক সংখ্যা 0 দিয়ে নতুন রেকর্ড সন্নিবেশ করানোর চেষ্টা করছেন - যা সদৃশ এন্ট্রিগুলির সমস্যা তৈরি করছে এবং বিভ্রান্তিকর ড্রুপাল কোর যাইহোক, ডুপাল কোর এই জাতীয় ক্রিয়াকলাপের জন্য ঝুঁকিপূর্ণ নোড_সেভ সমস্যাটি দেখতে পাবে না এবং সেই রেকর্ডটি ডিবি-তে সন্নিবেশ করানোর চেষ্টা করবে - যা স্ক্যুয়েল ত্রুটি সৃষ্টি করছে - এবং পিডিও ব্যতিক্রম ছুঁড়ে ফেলবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.