সৃষ্টিতে নোড পরিবর্তিত তারিখ নির্ধারণের জন্য দ্রুপাল কীভাবে থামবেন?


9

এটি কাস্টম মাইগ্রেশন স্ক্রিপ্ট তৈরি নিয়ে আমার সমস্যাগুলি সম্পর্কে আমার দ্বিতীয় প্রশ্ন।

আমি কেবলমাত্র নতুন নোড তৈরি করছি এবং আপডেটগুলির বিষয়ে চিন্তা করি না।

কোড:

        $node = new stdClass();
        $node->type = 'migrate';
        $node->title = $content['title'];
        $node->language = LANGUAGE_NONE;

        $node->created = (int) date('U',strtotime($content['created']));

        $modified = $content['modified'];               
        if (! empty($modified) && $modified != '0000-00-00 00:00:00') {
            $modified = (int) date('U',strtotime($modified));
        } else {
            $modified = 0;
        }               
        $node->changed = $modified;

        node_object_prepare($node);

        #some lines later
        node_save($node);

যেমন আমার my সংশোধিত 0 তে সেট করা আছে এবং সংরক্ষণের পরে আমি বর্তমান তারিখের মান সহ প্রশাসক সামগ্রী তালিকায় এই নোড সারিটির আপডেট হওয়া কলামটি দেখতে পাচ্ছি।

উত্তর:


14

changedনোড অবজেক্টে প্রথমে একটি কাস্টম সম্পত্তি সেট করে $node->modified, কল করার আগে আপনার মাইগ্রেশন স্ক্রিপ্টে node_save()এবং নোড_প্রসেস হুক বাস্তবায়নের মাধ্যমে আপনার আসল সময়টি সংরক্ষণ করা উচিত :

/**
 * Implements hook_node_presave().
 */
function mymodule_node_presave($node) {
  $node->changed = $node->modified;
}

এটি কার্যকর করে এমন সমস্ত মডিউল কল করার আগে node_save()সেটগুলি কাজ করবে ।$node->changedhook_node_presave()


হ্যাঁ এটি 100% কাজ করে :)
কোডিয়াম

1
সাসপেক্ট আমি এর জন্য গুলিবিদ্ধ হব, তবে আমার মতো আপনি যদি ড্রাশের মাধ্যমে স্বল্পজীবী স্ক্রিপ্ট চালাচ্ছেন যা মডিউলটির অংশ নয় এবং আপনি কেবল একটি হুক ইত্যাদি বাস্তবায়নের জন্য কোনও মডিউল প্রয়োগ করতে চান না তবে এটি db_query('UPDATE {node} SET created=:created, changed=:changed WHERE nid=:nid', array(':created'=>$whatever,':changed'=>$whatever,':nid'=>$node->nid));সংরক্ষণ করার পরে কাজ করে ।
আর্টফুলরোবট

আমি ঘৃণা করি যে আমাদের একটি হুকের মতো বিশ্রী কিছু করতে হবে (বিশ্রী কারণ পরিবর্তনটি সম্পূর্ণ ভিন্ন কোড বিভাগে ঘটে) তবে এটি ড্রুপলের দোষ, আপনার নয়। +1
কেনি ওয়াইল্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.