আমি অবশ্যই যেতে চাই field_attach_update
।
ধারণাটি সহজ। কেবল নোডটি লোড করুন এবং ফিল্ড_আটাচ_আপডেট ব্যবহার করে এটি সংরক্ষণ করুন।
উদা:
$node = node_load($nid);
$node->field_name[LANGUAGE_NONE][0]['value'] = 'New value';
field_attach_presave('node', $node);
field_attach_update('node', $node);
// Clear the static loading cache.
entity_get_controller('node')->resetCache(array($node->nid));
এটি কোনও টাইমস্ট্যাম্প বা নোড_সেভ সাধারণত অনুরোধ করে এমন কোনও হুক পরিবর্তিত হবে না। নোড লোড করা কিছু হুককেও ডেকে আনবে সম্ভবত এটি এতটা দক্ষ নয়।
আপনার যদি নিড থাকে এবং নোডের কাঠামোটি যদি মৃত সহজ হয় তবে আপনি এটিও এটি করতে পারেন:
$node = new stdClass();
$node->nid = $nid; // Enter the nid taken. Make sure it exists.
$node->type = 'article';
$node->field_name[LANGUAGE_NONE][0]['value'] = 'New value';
field_attach_presave('node', $node);
field_attach_update('node', $node);
// Clear the static loading cache.
entity_get_controller('node')->resetCache(array($node->nid));
যাইহোক, আপনি ক্ষেত্রগুলি বাদে অন্য কোনও কিছু আপডেট করার চেষ্টা করছেন, এটি কোনও কাজ করবে না (মন্তব্য স্থিতি, প্রকাশিত স্থিতি ইত্যাদি)। এছাড়াও আপনি যদি নোড_সেভ ব্যবহার করে থাকেন তবে নির্দিষ্ট নোডের জন্য ক্যাশেটি বিভিন্ন পদ্ধতির জন্য স্বয়ংক্রিয়ভাবে সাফ হয়ে যাবে আমাদের এটি '_নিটি_জেট_কন্ট্রোলার' দিয়ে পরিষ্কার করতে হবে।
আপডেট:
দেখা যাচ্ছে যে field_attach_presave()
অন্যান্য মডিউলগুলি ফিল্ড ইনপুটটি সঠিকভাবে প্রক্রিয়া করতে দেওয়ার জন্যও আপনাকে কল করা উচিত । উদাহরণস্বরূপ, ফাইল মডিউলটি এই হুক ব্যবহার করে স্থিতিতে ফাইলের স্থিতি সেট করতে ব্যবহার করে। আমি উপরে আমার 2 উদাহরণ আপডেট করেছি।
field_attach_update
?